Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 32 additions & 6 deletions 1-js/02-first-steps/03-strict-mode/article.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 新模式,"use strict"
# 现代模式,"use strict"

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

这么做有利于兼容旧代码,但缺点是 JavaScript 创造者的任何错误和不完美的考虑也永远地保留在了语言中。

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

## "use strict"

Expand All @@ -15,7 +15,7 @@
```js
"use strict";

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

Expand Down Expand Up @@ -47,15 +47,41 @@ alert("some code");
一旦进入了严格模式,就没有退路了。
```

## 浏览器控制台

以后,当你使用浏览器控制台去测试功能时,请注意 `use strict` 默认不会被启动。

有时,使用 `use strict` 产生影响的时候,你会得到错误的结果。

你可以试试按下 `key:Shift+Enter` 去输入多行代码,然后将 `use strict` 置顶,就像这样:

```js
'use strict'; <Shift+Enter 换行>
// ...你的代码
<Enter 运行>
```

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

如果依然不行,那确保 `use strict` (有效)的最可靠方法是像这样将代码输入到控制台:

```js
(function() {
'use strict';

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

## 总是使用 "use strict"

使用 `"use strict"` 与“默认”模式的区别仍然有待完善
我们还没说到使用 `"use strict"` 与“默认”模式的区别

在接下来的章节中,当我们学习语言功能时,我们会记录严格模式的差异。幸运的是,没有那么多。实际上,它们为我们编写代码提供了极大的便利。
在接下来的章节中,当我们学习语言功能时,我们会标注严格模式与默认模式的差异。幸运的是,没有那么多。实际上,它们为我们编写代码提供了极大的便利。

当前,一般来说了解这些就够了:

1. `"use strict"` 指令将浏览器引擎转换为“现代”模式,改变一些内建特性的行为。我们会在之后的学习中了解这些细节。
2. 严格模式通过顶部的 `"use strict"` 启用。一些新语言特性诸如 "classes" 和 "modules" 也会自动开启严格模式。
2. 严格模式通过将 `"use strict"` 放置在整个脚本或函数的顶部来启用。一些新语言特性诸如 "classes" 和 "modules" 也会自动开启严格模式。
3. 所有的现代浏览器都支持严格模式。
4. 建议始终使用 `"use strict"` 启动脚本。本教程的所有例子都默认采用严格模式,除非特别指定(非常少)。