this 的第一個(gè)綁定規(guī)則是默認(rèn)綁定, 即指向全局對(duì)象. 在無(wú)法應(yīng)用其它三個(gè)規(guī)則時(shí), 就會(huì)默認(rèn)使用這個(gè)規(guī)則.
如果不帶任何修飾的函數(shù)引用進(jìn)行調(diào)用, 函數(shù)內(nèi)的this就會(huì)采用默認(rèn)綁定.
function foo(){
console.log(this.a);
}
function bar(){
var a = 3;
foo()
}
var a = 2;
bar(); // 輸出2
如果使用了嚴(yán)格模式, 則不能將全局對(duì)象用于默認(rèn)綁定, this 會(huì)綁定到 undefined
.
function foo(){
"use strict"
console.log(this.a);
}
function bar(){
var a = 3;
foo()
}
var a = 2;
bar(); // TypeError: Cannot read properties of undefined (reading 'a')
值得注意的是: 嚴(yán)格模式應(yīng)當(dāng)放在函數(shù)運(yùn)行的位置, 如果是在函數(shù)調(diào)用處聲明嚴(yán)格模式, 則不會(huì)影響默認(rèn)綁定:
function foo(){
console.log(this.a);
}
function bar(){
"use strict"
var a = 3;
foo()
}
var a = 2;
bar(); // 輸出2, 仍然能應(yīng)用默認(rèn)綁定到全局對(duì)象.