Firefox忽略"使用严格"在控制台

时间:2016-06-17 14:54:45

标签: javascript firefox strict-mode

以下是MDN的代码:

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

console.log(f2());

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

enter image description here

在Chrome中,一切正常。

1 个答案:

答案 0 :(得分:1)

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

但是,应该注意,如果我们引用this answer并尝试在firefox控制台的分隔语句中执行测试:

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

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

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

这里更改的是"use strict"在分离的提示符中使用而不是在同一个提示符中使用,并且似乎Firefox的开发工具会为每个提示重新初始化严格模式。因此,如果不是 正好使用MDN的措辞,你试过像

这样的东西
  • 在第一个提示
  • 上发出"use strict"
  • 然后在第二行声明你的功能
  • 并最终将其显示在第三行,我们可以在屏幕截图中看到,

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

注意:请注意,另一方面,以下似乎正在起作用:

>> "use strict"; function f3(){return this;}
"use strict"
>> console.log(f3())
undefined