为什么这个JavaScript片段返回true?
将此示例视为一种心理练习。我不明白为什么它会变成真的。当然,内部的为什么这个JavaScript片段返回true?,javascript,Javascript,将此示例视为一种心理练习。我不明白为什么它会变成真的。当然,内部的this应该限定在匿名函数的范围内,而外部的this根本与该函数无关 var结果=(函数(){ 归还这个; }())==这个; var el=document.createElement(“div”) el.innerHTML=结果; document.body.appendChild(el)这里没有太多范围,只有“上下文” 由于IIFE是在没有上下文的情况下调用的,因此内部this默认为窗口(ES5“严格模式”中除外),这也是
this
应该限定在匿名函数的范围内,而外部的this
根本与该函数无关
var结果=(函数(){
归还这个;
}())==这个;
var el=document.createElement(“div”)
el.innerHTML=结果;
document.body.appendChild(el)
这里没有太多范围,只有“上下文”
由于IIFE是在没有上下文的情况下调用的,因此内部
this
默认为窗口(ES5“严格模式”中除外),这也是全局范围内this
的默认值。这个问题不是关于范围,而是上下文
JS中的上下文(即此上下文)通常设置为调用函数的对象
在这种情况下,没有用户定义的对象调用IIFE,因此它内部的上下文默认为全局对象,因此为true
指定严格模式将导致IIFE内的上下文未定义,从而降低意外全局对象更改的可能性。console.log(此)代码>此
与作用域无关,它取决于调用函数的方式。函数的“this”指的是窗口。哦,亲爱的。为什么“use strict”不会导致抛出错误而不是更改结果的值?因为完全可以(通过调用或应用)为该函数提供上下文。不正确的根据我的经验,这个总是程序员错误,而不是运行时错误。