长久以来,JavaScript 不断向前发展且并未带来任何兼容性问题。新的特性被加入,旧的功能也没有改变。
这么做有利于兼容旧代码,但缺点是 JavaScript 创造者的任何错误或不完善的决定也将永远被保留在 JavaScript 语言中。
这种情况一直持续到 2009 年 ECMAScript 5 (ES5) 的出现。ES5 规范增加了新的语言特性并且修改了一些已经存在的特性。为了保证旧的功能能够使用,大部分的修改是默认不生效的。你需要一个特殊的指令 —— “use strict” 来明确地激活这些特性。

“use strict”

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

  1. "use strict";
  2. // 代码以现代模式工作
  3. ...

“use strict” 可以被放在函数体的开头。这样则可以只在该函数中启用严格模式。但通常人们会在整个脚本中启用严格模式。

  1. alert("some code");
  2. // 下面的 "use strict" 会被忽略,必须在最顶部。
  3. "use strict";
  4. // 严格模式没有被激活

一旦进入了严格模式,就无法取消。

浏览器控制台

当你使用 开发者控制台 运行代码时,它默认是不启动 use strict 的。
有时,当 use strict 会对代码产生一些影响时,你会得到错误的结果。

在控制台中启用 use strict

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

它在大部分浏览器中都有效,像 Firefox 和 Chrome。
如果依然不行(使用的是旧版本的浏览器)。将你的代码放在这样的包装器中:

  1. (function() {
  2. 'use strict';
  3. // ...你的代码...
  4. })()