JavaScript——Javascript严格模式笔记
原文:http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/
译文:http://zhoujunmiao.com/?p=292/
阅读笔记:
- 去除with语句(Eliminates with)当with语句出现在严格模式中时,它会被认为是非法的Javascript语句并抛出语法错误。
- 防止意外的全局变量(Prevents accidental globals)变量在赋值之前必须声明。给一个未声明的变量赋值,严格模式中,这样做将抛出一个错误。
- 取消this值的强制转换(Eliminates this coercion)当this值为null或undefined时,不会再将其强制转换为全局对象。this值必须赋值,否则将保留undefined值。这意味着调用构造函数时若漏掉了new关键字也会导致错误
- 拒绝重复(No duplicates)在对象中定义了重复的属性或者给函数定义了重复的参数名。严格模式下,这两种情况都会导致错误的发生
- 更安全的eval()(Safer eval())在eval()语句中声明的变量以及函数不会在包含域中创建。
- 不可改变引发的错误(Errors for immutables)严格模式将保证无论你在何时试图使用一种不被允许的方式修改一个对象或对象的属性时抛出错误。
- 如何使用:
在现代浏览器中很容易启用严格模式,只需添加下面一条语句:
"use strict";
全局地使用这条指示,意味着同个文件下的所有代码都在严格模式下运行。
最好只在函数内使用严格模式,如果你想将严格模式应用于多个函数,可以使用如下模式( immediately-invoked function expression (IIFE)):
(function() { "use strict"; function doSomething() { // this runs in strict mode } function doSomethingElse() { // so does this } }());