JavaScript的严格模式

ECMAScript 5 讲解了"严格模式"的概念.它允许你将一个程序,或者一个函数,放在一个"严格"操作环境之内.严格环境可以避免不谨慎的行为,抛出更多的异常.主要是为了做更多的检查.

严格模式的运作

举一个例子,在一般的JavaScript里,错误的拼写会创建一个新的全局变量.在严格模式,这将抛出一个错误,使得不再可能偶然的创建一个全局变量.

因为是非严格模式,所以下面的脚本可以执行。

str = "Hello World";
document.write(str);

因为是严格模式,下面的脚本不能正常执行。

'use strict';
str = "Hello World"; // => 抛出引用异常错误
document.write(str);

上面的脚本会抛出引用异常错误,因为变量str没有被声明就使用了。

如何纠正?

'use strict';
var str = "Hello World";
document.write(str);

浏览器支持

主流浏览器目前都实现了严格模式支持.但是,不要盲目依赖它,因为许多浏览器版本并不规范,只有部分支持严格模式或根本不支持它(例如版本10以下的Internet Explorer!)。严格模式会改变语法,将导致在未实现严格模式的浏览器中出现失误和错误。

如果浏览器不支持严格模式,会如何呢?

不发生任何事情。"use strict" 只是一个简单的字符串语句,在不支持严格模式的JavaScript引擎里,会被忽略。 这样就可以安全的跨浏览器使用严格模式,同时确保与将来可能支持严格模式的浏览器具有内建的向前兼容性。

使用严格模式的优势:

  • 依靠抛出异常错误,排出客户端JavaScript错误
  • 修复了使JavaScript引擎难以完成优化的错误
  • 使代码运行得更快,比不是在严格模式下的相同代码
  • 禁止在ECMAScript的未来版本中定义某些类似语法
原文链接