为什么在Chrome的控制台窗口中运行时,这不会记录未定义到控制台?

时间:2014-08-13 10:38:54

标签: javascript strict-mode

(function (){
  'use strict';
  function Foo() { 
    this.foo = function() { 
      setTimeout(function(){ console.log(this); }, 0);
    } 
  }
  new Foo().foo();
}())

如果我没有声明严格模式,那么全局对象将被打印到控制台(即窗口)。

但是,鉴于声明了严格模式,我希望将undefined打印到控制台。

参考:

  

“这意味着,除其他外,在浏览器中它不再是   可以通过严格的内部引用窗口对象   模式功能。“

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode#.22Securing.22_JavaScript

更新:以实现创建新执行上下文所需的预期行为,并在该上下文中引用它,如下所示:

(function (){
  'use strict';
  function Foo() { 
    this.foo = function() { 
      setTimeout(function(){ (function() { console.log(this); }()) }, 0);
    } 
  }
  new Foo().foo();
}())

0 个答案:

没有答案