【发布时间】:2013-01-03 17:49:10
【问题描述】:
在 JavaScript 代码中添加“use strict”作为第一条语句¹ 将在整个范围内强制执行严格模式
那为什么:
"use strict";
012;
不抛出错误
同时
(function () {
"use strict";
012; })();
有吗? (严格模式下不允许使用八进制文字。)
John resig says nothing about it. he just says :
简单。把它扔在程序的顶部,以使整个程序都启用它 脚本:
"使用严格";或者将它放在一个函数中以打开严格模式 仅在这种情况下。
function imStrict(){ "使用严格"; // ... 你的代码 ... }
编辑:
编辑#2。
我在控制台中测试了代码。(chrome)。在 jsbin 示例中 - 它正在工作。仍然,我不明白为什么它在控制台中的行为不同。
【问题讨论】:
-
如果你在一行中执行
"use strict"; 012;会发生什么? -
@melpomene 相同。刚刚测试过。
-
好吧,那么无论你使用什么作为 REPL 都不支持顶级
"use strict"。 -
不要在控制台中测试代码并期望相同的行为。
-
控制台不是一个纯粹的环境。使用任何其他严格模式示例,您会看到它禁用了全局严格声明,例如
foo="bar"(无声明)。这不是应用程序代码的情况,它实际上很重要。此外,控制台中定义的方法通常在应用程序代码中不可用。底线...如果您在控制台中看到奇怪的行为,请首先在实际应用程序中进行验证。
标签: javascript