这很奇怪。 “使用严格”的地方会有不同的结果
我的节点版本是v9.9.0
我不明白,有人会帮我吗
"use strict";
function tryFunction() {
var tryValue = 123;
return tryValue;
}
if (true) {
testvar = 123; // ReferenceError: testvar is not defined
}
function tryFunction() {
var tryValue = 123;
return tryValue;
}
"use strict";
if (true) {
testvar = 123;
}
// no errors???
function tryFunction() {
var tryValue = 123;
return tryValue;
}
if (true) {
"use strict";
testvar = 123;
}
// no errors???
答案 0 :(得分:1)
参见例如MDN documentation for strict mode:
严格模式适用于整个脚本或各个功能。
[...]
要为整个脚本调用严格模式,请将完全语句
"use strict";
(或'use strict';
)放在任何其他语句之前。
[...]
同样,要为函数调用严格模式,请先将完全语句
"use strict";
(或'use strict';
)放入函数体中其他陈述。
(强调我的。)
如果"use strict";
出现在文件或块的中间,则它不起作用,并且会被忽略,因为任何其他字符串文字都是。