(function() {
var testFnk = function() {
console.log(this);
}
console.log(window.testFnk);
testFnk();
})();
此代码的输出为:
你能解释为什么在函数内部引用Window,但是检查window.testFnk是未定义的吗?
编辑:当我看到答案时,我的问题没有明确说明。我的意思:为什么在这两种情况下记录的值都是“未定义”或“窗口”?答案 0 :(得分:1)
因为在非严格模式下,this
默认为浏览器中的window
。在严格模式下,它将是undefined
。
window.testFnk
未定义,因为您尚未将testFnk
方法添加到window
对象。您可以通过分配window
或隐含地通过隐式全局(在严格模式下抛出异常,FYI)来明确地执行此操作;
(function() {
window.testFnk = function() {
console.log(this);
}
console.log(window.testFnk);
testFnk();
})();