美文网首页
10.严格模式

10.严格模式

作者: 静昕妈妈芦培培 | 来源:发表于2021-09-22 14:57 被阅读0次

认识严格模式

在ECMAScript5标准中,JavaScript提出了严格模式的概念(Strict Mode):

  • 严格模式很好理解,是一种具有限制性的JavaScript模式,从而使代码隐式的脱离了”懒散(sloppy)模式“
  • 支持严格模式的浏览器在检测到代码中有严格模式时,会以更加严格的方式对代码进行检测和执行;
严格模式对正常的JavaScript语义进行了一些限制:
  • 严格模式通过抛出错误 来消除一些原有的 静默(silent)错误
  • 严格模式让JS引擎在执行代码时可以进行更多的优化(不需要对一些特殊的语法进行处理);
  • 严格模式禁用了在ECMAScript未来版本中可能会定义的一些语法;

开启严格模式

那么如何开启严格模式呢?严格模式支持粒度话的迁移:

  • 可以支持在js文件中开启严格模式;
"use strict";

//非严格模式下的静默错误会报错
message = "abc";
console.log(message);

image.png
  • 也支持对某一个函数开启严格模式;
message = "abc";
console.log(message);

function foo() {
  "use strict";
  true.name = "why";
}
foo();

image.png
严格模式通过在文件或者函数开头使用 use strict 来开启。

严格模式限制

这里我们来说几个严格模式下的严格语法限制:

  • JavaScript被设计为新手开发者更容易上手,所以有时候本来错误语法,被认为也是可以正常被解析的;
  • 但是这种方式可能给带来留下来安全隐患;
  • 在严格模式下,这种失误就会被当做错误,以便可以快速的发现和修正;
    n 1. 无法意外的创建全局变量
    n 2. 严格模式会使引起静默失败(silently fail,注:不报错也没有任何效果)的赋值操作抛出异常
    n 3. 严格模式下试图删除不可删除的属性
    n 4.严格模式不允许函数参数有相同的名称
    n 5. 不允许0的八进制语法
    n 6. 在严格模式下,不允许使用with
    n 7. 在严格模式下,eval不再为上层引用变量
    n 8. 严格模式下,this绑定不会默认转成对象

非常感谢王红元老师的深入JavaScript高级语法让我学习到很多 JavaScript 的知识

相关文章

  • 10.严格模式

    认识严格模式 在ECMAScript5标准中,JavaScript提出了严格模式的概念(Strict Mode):...

  • 面向对象-严格模式、作用域

    严格模式 js有两中开发模式:非严格模式(默认)+严格模式(“ues strict”) 严格模式:会进行更严格的代...

  • JavaScript this

    全局下this 非严格模式/严格模式 window 函数内this 非严格模式 window 严格模式 undef...

  • 开发中的严格模式

    js中有严格模式和非严格模式两种运行环境 在开发中,有非严格模式和严格模式2种开发模式 在严格模式下,会做更加严格...

  • 严格模式和非严格模式

    es6添加了严格模式("use strict")主要作用: 1.严格模式通过抛出错误来消除一些原有的静默错误。 2...

  • JS基本类型和变量

    严格模式 ECMAScripr5引入了严格模式。启用严格模式可以在顶部添加: “use strict” 严格模式下...

  • 严格模式

    ECMScript 5引入严格模式(strict mode)。严格模式定义了一种不同的解析与执行模型,ES3中的不...

  • 严格模式

    概览 严格模式的 目的:使代码更加 安全和 易于优化,代表了这门语言未来的发展方向。我们应该在代码中一直使用。 内...

  • 严格模式

    除了正常的运行模式,JavaScript还有第二种运行模式:“严格模式”(strict mode)。顾名思义,这种...

  • 严格模式this

    在严格模式下,在全局作用域中,this指向window对象(和非严格模式一致) 对象的函数中的this指向调用函数...

网友评论

      本文标题:10.严格模式

      本文链接:https://www.haomeiwen.com/subject/ekdsgltx.html