1

这是来自MDN的代码:

function f2(){
  "use strict"; // see strict mode
  return this;
}

console.log(f2());

脚本中的 f2 调用工作正常。但它从控制台调用显示窗口对象!怎么了?设置“javascript.options.strict”选项没有帮助。

在此处输入图像描述

在 Chrome 中一切正常。

4

1 回答 1

2

如果您确实执行了确切的 MDN 片段,那将是一个错误,必须已经修复,因为我无法重现它。

但是,应该注意,如果我们参考这个答案并尝试在 Firefox 控制台中的单独语句中执行测试:

>> var isStrict = (function() { return !this; })(); console.log(isStrict);
false
>> "use strict"; var isStrict = (function() { return !this; })(); console.log(isStrict);
true 

这证明了 Firefox 的开发工具确实考虑"use strict"到了这一点。现在,如果我们再试一次:

>> "use strict";
"use strict"
>> var isStrict = (function() { return !this; })(); console.log(isStrict);
false

这里的变化是"use strict"在单独的提示中而不是在同一个提示中使用,并且似乎 Firefox 的开发工具为每个提示重新初始化严格模式。因此,如果您尝试使用类似 MDN 的措辞而不是完全使用 MDN 的措辞

  • "use strict"在第一个提示时发出,
  • 然后在第二行声明你的函数
  • 最后将它显示在第三行,正如我们在屏幕截图中看到的那样,

"use strict"...关于在每个提示上重置的事实,输出本来是正常的。

注意:请注意,另一方面,以下似乎有效:

>> "use strict"; function f3(){return this;}
"use strict"
>> console.log(f3())
undefined
于 2017-10-19T12:54:58.017 回答