长期以来,JavaScript 在没有兼容性问题的情况下发展。新功能被添加到语言中,而旧的功能没有改变。
这样做的好处是永远不会破坏现有代码。但缺点是,JavaScript 创建者所犯的任何错误或不完美的决策都会永久留在语言中。

直到 2009 年,ECMAScript 5(ES5)出现了。它为语言添加了新功能,并修改了一些现有功能。为了保证旧代码仍然可用,大多数这样的修改默认是关闭的。你需要使用一个特殊的指令显式启用它:”use strict”。
“use strict”
该指令看起来像一个字符串:”use strict” 或 ‘use strict’。当它位于脚本的顶部时,整个脚本都会以“现代”模式运行。
例如:
"use strict"; // this code works the modern way ...
很快我们就会学习函数(用于组合命令的方法),所以提前说明一下,”use strict
” 可以放在函数的开头。
这样做会仅在该函数内启用严格模式。但通常,人们会将其用于整个脚本。
确保 “use strict” 位于顶部
请确保 "use strict"
位于脚本的顶部,否则严格模式可能不会启用。
严格模式在这里没有启用:
alert("some code"); // "use strict" below is ignored--it must be at the top "use strict"; // strict mode is not activated
只有注释可以出现在 "use strict"
之上。
浏览器控制台
当你使用开发者控制台运行代码时,请注意它默认情况下不会启用严格模式(strict mode)。
有时,当严格模式产生差异时,你会得到不正确的结果。
那么,如何在控制台中启用严格模式呢?
'use strict'; <Shift+Enter for a newline> // ...your code <Enter to run>
它在大多数浏览器中都有效,特别是 Firefox 和 Chrome。
如果不行,例如在旧版浏览器中,可以使用一种简便但可靠的方法来确保启用严格模式。将它放入这样的包装器中:
(function() { 'use strict'; // ...your code here... })()
什么时候应该使用 “use strict” ?
这个问题听起来似乎很显然,但实际上并不是。
有人可能会建议在脚本开头加上 “use strict”……但你知道什么更酷吗?
现代 JavaScript 支持“类”和“模块”——这些是高级语言结构(我们会在之后讲到),它们会自动启用严格模式。所以,如果我们使用它们,就不需要再加上 “use strict” 指令了。
因此,目前来说,在脚本顶部加上 “use strict”; 是一个好习惯。等到你的代码全部用类和模块组织时,你可以省略它。
到目前为止,我们已经了解了 “use strict” 的一般情况。
在接下来的章节中,当我们学习语言特性时,我们将看到严格模式和旧模式之间的差异。幸运的是,这些差异不多,并且它们实际上让我们的编程生活变得更好。
本教程中的所有示例都假定使用严格模式,除非(极少数情况)另有说明。

Linux, PHP, C,C++,JavaScript,verilog 老师