为什么这个JavaScript代码段会返回true?

时间:2014-12-31 00:25:10

标签: javascript

将此示例视为心理练习。我不明白为什么它会返回真实。当然,内部this应限定为匿名函数,外部this根本不与该函数相关。



var result = (function() {
  return this;
}()) === this;

var el = document.createElement("div")
el.innerHTML = result;
document.body.appendChild(el)




2 个答案:

答案 0 :(得分:3)

这里没有太多的范围,只有" context"。

由于在没有上下文的情况下调用IIFE,因此内部this默认为window(除了ES5"严格模式"),它们也是默认值{{1在全球范围内。

答案 1 :(得分:0)

这个问题不是范围界定,而是背景。

JS中的上下文(即this)通常被设置为调用该函数的对象。

在这种情况下,没有用户定义的对象调用IIFE,因此其中的上下文默认为全局对象,因此为真。

指定严格模式将导致IIFE内的上下文未定义,从而降低意外全局对象更改的可能性。