Javascript 现代模式,"use strict"

2023-02-17 10:37 更新

长久以来,JavaScript 不断向前发展且并未带来任何兼容性问题。新的特性被加入,旧的功能也没有改变。

这么做有利于兼容旧代码,但缺点是 JavaScript 创造者的任何错误或不完善的决定也将永远被保留在 JavaScript 语言中。

这种情况一直持续到 2009 年 ECMAScript 5 (ES5) 的出现。ES5 规范增加了新的语言特性并且修改了一些已经存在的特性。为了保证旧的功能能够使用,大部分的修改是默认不生效的。你需要一个特殊的指令 —— "use strict" 来明确地激活这些特性。

“use strict”

这个指令看上去像一个字符串 "use strict" 或者 'use strict'。当它处于脚本文件的顶部时,则整个脚本文件都将以“现代”模式进行工作。

比如:

"use strict";

// 代码以现代模式工作
...

很快我们就会学习到函数(一种组合命令的方式),所以让我们提前注意一下,"use strict" 可以被放在函数体的开头。这样则可以只在该函数中启用严格模式。但通常人们会在整个脚本中启用严格模式。

确保 “use strict” 出现在最顶部

请确保 ​"use strict"​ 出现在脚本的最顶部,否则严格模式可能无法启用。

这里的严格模式就没有被启用:

alert("some code");
// 下面的 "use strict" 会被忽略,必须在最顶部。

"use strict";

// 严格模式没有被激活

只有注释可以出现在 "use strict" 的上面。

没有办法取消 ​use strict

没有类似于 ​"no use strict"​ 这样的指令可以使程序返回默认模式。

一旦进入了严格模式,就没有回头路了。

浏览器控制台

当你使用 开发者控制台 运行代码时,请注意它默认是不启动 use strict 的。

有时,当 use strict 会对代码产生一些影响时,你会得到错误的结果。

那么,怎么在控制台中启用 use strict 呢?

首先,你可以尝试搭配使用 ​Shift+Enter​ 按键去输入多行代码,然后将 use strict 放在代码最顶部,就像这样:

'use strict'; <Shift+Enter 换行>
//  ...你的代码
<按下 Enter 以运行>

它在大部分浏览器中都有效,像 Firefox 和 Chrome。

如果依然不行,例如你使用的是旧版本的浏览器,那么有一种很丑但可靠的启用 use strict 的方法。将你的代码放在这样的包装器中:

(function() {
  'use strict';

  // ...你的代码...
})()

我们应该使用 “use strict” 吗?

这个问题的答案好像很显而易见,但事实并非如此。

有人可能会建议在脚本的最顶部放置 "use strict" 这行代码…… 但你知道更酷的方式吗?

现代 JavaScript 支持 “class” 和 “module” —— 高级语言结构(本教程后续章节会讲到),它们会自动启用 use strict。因此,如果我们使用它们,则无需添加 "use strict" 指令。

因此,目前我们欢迎将 "use strict"; 写在脚本的顶部。稍后,当你的代码全都写在了 class 和 module 中时,你则可以将 "use strict"; 这行代码省略掉。

目前,我们已经基本了解了 use strict

在接下来的章节中,当我们学习语言功能时,我们会看到严格模式与旧的模式之间的差异。幸运的是,差异其实没有那么多。并且,这些差异实际上提升了我们的编程体验。

本教程的所有例子都默认采用严格模式,除非特别指定(非常少)。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号