var foo = { bar:function(){ console.log(this); } } foo.bar(); (foo.bar)(); (foo.bar = foo.bar)();//window (foo.bar,foo.bar)();//window (false || foo.bar)();//window
誰幫忙解釋下后三個(gè)為什么呀???
此時(shí)foo.bar作為變量,還沒有作為語句被計(jì)算過,還未丟失foo,調(diào)用的時(shí)候等同foo.bar().
同上,作為語句被執(zhí)行
同上
foo.bar = foo.bar是一個(gè)語句,調(diào)用時(shí)執(zhí)行該語句返回一個(gè)function,已丟失foo,又因?yàn)槿终{(diào)用,所以this被賦值為當(dāng)前全局對(duì)象。
所以很多時(shí)候我們都是
簡(jiǎn)單來講后三個(gè)函數(shù)調(diào)用左邊不是內(nèi)部引用類型,所以函數(shù)調(diào)用確定的 this 是 undefined,在非嚴(yán)格模式下內(nèi)部會(huì)設(shè)置為 全局對(duì)象。具體看這篇博客 https://m2mbob.cn/2015/...