为什么这个javascript在严格模式下没有错误

时间:2018-06-12 03:16:06

标签: javascript strict

这很奇怪。 “使用严格”的地方会有不同的结果 我的节点版本是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???

1 个答案:

答案 0 :(得分:1)

参见例如MDN documentation for strict mode

  

严格模式适用于整个脚本各个功能

[...]

  

要为整个脚本调用严格模式,请将完全语句"use strict";(或'use strict';放在任何其他语句之前

[...]

  

同样,要为函数调用严格模式,请先将完全语句"use strict";(或'use strict';)放入函数体中其他陈述

(强调我的。)

如果"use strict";出现在文件或块的中间,则它不起作用,并且会被忽略,因为任何其他字符串文字都是。