Menu Close

Javascript严格模式,“use strict”

长期以来,JavaScript 在没有兼容性问题的情况下发展。新功能被添加到语言中,而旧的功能没有改变。

这样做的好处是永远不会破坏现有代码。但缺点是,JavaScript 创建者所犯的任何错误或不完美的决策都会永久留在语言中。

JavaScript严格模式use strict_use strict 用来兼容旧代码运行
JavaScript严格模式use strict_use strict 用来兼容旧代码运行

直到 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” 的一般情况。

在接下来的章节中,当我们学习语言特性时,我们将看到严格模式和旧模式之间的差异。幸运的是,这些差异不多,并且它们实际上让我们的编程生活变得更好。

本教程中的所有示例都假定使用严格模式,除非(极少数情况)另有说明。

READ  什么是JavaScript 的生成器,yield 操作符, 如何在生成器中传递值?
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in JavaScript 基础

Related Posts