美文网首页
ES5-严格模式

ES5-严格模式

作者: 蓝醇 | 来源:发表于2019-03-06 18:06 被阅读0次

除了正常运行模式,ES5添加了第二种运行模式:"严格模式"(strict mode)。

目的

  • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
  • 消除代码运行的一些不安全之处,为代码的安全运行保驾护航
  • 为未来新版本的Javascript做好铺垫

使用

  • 针对整个脚本文件:将use strict放在脚本文件的第一行,则整个脚本文件将以严格模式运行。

  • 针对单个函数:将use strict放在函数体的第一行,则整个函数以严格模式运行。

    如果浏览器不支持,则这句话只解析为一条简单的语句, 没有任何副作用。

  • 脚本文件的变通写法:因为第一种调用方法不利于文件合并,所以更好的做法是,借用第二种方法,将整个脚本文件放在一个立即执行的匿名函数之中。

    (function (){
      "use strict";
         // code
       })();
    
    

语法和行为改变

  • 必须用var声明变量

    在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。

  • 静态绑定

    1.创建eval作用域--正常模式下,eval语句的作用域,取决于它处于全局作用域,还是处于函数作用域。严格模式下,eval语句本身就是一个作用域,不再能够生成全局变量了,它所生成的变量只能用于eval内部。

    2.禁止使用with语句--因为with语句无法在编译时就确定,属性到底归属哪个对象。

  • 禁止自定义的函数中的this指向window,禁止在函数内部遍历调用栈

    使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

  • 对象不能有重名的属性,函数不能有重名的参数

    • 正常模式下,如果对象有多个重名属性,最后赋值的那个属性会覆盖前面的值。严格模式下,这属于语法错误。

    • 正常模式下,如果函数有多个重名的参数,可以用arguments[i]读取。严格模式下,这属于语法错误。

      参考

相关文章

  • ES5-严格模式

    除了正常运行模式,ES5添加了第二种运行模式:"严格模式"(strict mode)。 目的 消除Javascri...

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

    严格模式 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指向调用函数...

网友评论

      本文标题:ES5-严格模式

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