var a={
name:"Rhona",
check:(function(){
return this.name;
})();
}
console.log(a.check)// This returns ""
一个空字符串我希望它返回 Rhona,它没有给出 undefined 或 null,但是一个空字符串这里发生了什么?
我还想知道为什么当我访问不存在的对象属性时,它给出 undefined 而不是给出 not Define 我认识到 undefined 是在创建阶段赋予变量的值,执行阶段然后初始化该值,所以如果没有初始化它保持未定义,所以当我访问一个对象属性时,假设a.lastname不存在,java脚本不应该返回未定义,为什么它给出未定义?
IIFE 立即执行(即第一个“I”1)。因为你调用它时没有做任何特殊的设置this
, this
默认为全局对象(在松散模式下)或undefined
(在严格模式下)。 (看“this”关键字如何工作? https://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work)
您基本上是这样做的,但没有临时变量:
var temp = (function() {
return this.name;
})();
var a = {
name: "Rhona",
check: temp
}
console.log(a.check) // This returns ""
你得到的原因""
而不是undefined
是你使用的是松散模式,所以this
指的是全局对象,也就是浏览器上的window,window有一个name
属性(当前窗口的名称)通常为空(""
).
1 “IIFE”中的第一个“I”是“内联”或“立即”,具体取决于您问的是谁。 :-) 例如,“内联调用函数表达式”或“立即调用函数表达式”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)