JavaScript严格模式 use strict
严格模式,“use strict”
很长一段时间以来,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"。
没有办法取消 use strict
没有这样的指令"no use strict"可以将引擎恢复到旧行为。
一旦我们进入严格模式,就没有回头路了。
浏览器控制台
当您使用开发者控制台运行代码时,请注意use strict默认情况下不会。
有时,当有所作为时use strict,您会得到不正确的结果。
那么,如何use strict在控制台中实际操作呢?
首先,你可以尝试按下输入多行,并放在最上面,像这样:Shift+Enteruse strict
'use strict'; <Shift+Enter for a newline> // ...your code <Enter to run>
它适用于大多数浏览器,即 Firefox 和 Chrome。
如果没有,例如在旧浏览器中,则有一种丑陋但可靠的方法来确保use strict. 把它放在这种包装里:
(function() { 'use strict'; // ...your code here... })()
我们应该“使用严格”吗?
这个问题可能听起来很明显,但事实并非如此。
可以推荐使用"use strict"...开始脚本,但你知道什么是酷的吗?
现代 JavaScript 支持“类”和“模块”——高级语言结构(我们肯定会了解它们),它们会use strict自动启用。所以我们不需要添加"use strict"指令,如果我们使用它们。
所以,现在"use strict";是你脚本顶部的一个受欢迎的客人。稍后,当您的代码全部在类和模块中时,您可以省略它。
到目前为止,我们已经use strict大致了解了。
在接下来的章节中,随着我们学习语言特性,我们将看到严格模式和旧模式之间的区别。幸运的是,数量并不多,它们实际上让我们的生活变得更好。
本教程中的所有示例都采用严格模式,除非(很少)另有说明。