javaScript中的严格模式 (译)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript中的严格模式 (译)相关的知识,希望对你有一定的参考价值。

“use strict”状态指示浏览器使用严格模式,是javascript中一个相对少且安全的特征集。

 

特征列表(非完全列举)

  1. 不允许定义全局变量。(捕获没有用var声明的变量和变量名的拼写错误)
  2. 在严格模式下引起静默失败的声明将会抛出异常(声明 NaN  =  5)
  3. 试图删除不能删除的属性将会抛出异常(delete  object . prototype)
  4. 在一个对象中的所有属性名要唯一(var x = {x1 :  “1”,  x1 : “2”})
  5. 函数的参数名必须唯一(function sum(x, x){…})
  6. 禁止使用八进制数字语法(var  x = 023; 一些开发者错误的认为前面的0不会改变数字)
  7. 禁止使用with关键字
  8. eval在严格模式中不引入新的变量
  9. 禁止删除声明变量(delete  x)
  10. 禁止以任何形式对eval和arguments进行绑定或赋值
  11. 严格模式不会将arguments对象的值同步给形参。(例如,在函数sum(a, b) { return arguments[0] + b},这个写法是因为arguments[0]就绑定到了a上,等等。在正常模式下,对于第一个参数是arg的函数,对arg赋值会同时赋值给arguments[0],反之亦然(除非没有参数,或者arguments[0]被删除)。严格模式下,函数的arguments对象会保存函数被调用时的原始参数。Arguments[i]的值不会随之与之相应的参数的值的改变而变化,同名参数的值也不会随与之相应的arguments[i]的值的改变而变化。
  12. 不再支持arguments.callee。

 

     译自:http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it    &  answerd by gprasant

     更详细的说明在MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode

     相关链接:https://tc39.github.io/ecma262/#sec-strict-mode-of-ecmascript

                      http://yanhaijing.com/es5/#about

以上是关于javaScript中的严格模式 (译)的主要内容,如果未能解决你的问题,请参考以下文章

js中的严格模式和非严格模式的比较

JavaScript-严格模式

javascript:严格模式

246 JavaScript严格模式

Javascript 严格模式详解

Javascript 严格模式详解