使用call()的显式绑定在Javascript中是如何工作的?

使用call()的显式绑定在Javascript中是如何工作的?,javascript,node.js,reactjs,this,Javascript,Node.js,Reactjs,This,如果call()中传递null或nothing,是否将其视为隐式绑定? 以下代码的输出应该是什么?不是应该是2吗?我正在变得“未定义” function foo() { console.log( this.a ); } var a = 2; foo.call( null ); // 2 这是一个隐式绑定,您可以使用console.log(this)检查它。它打印全局对象。因此,在我的浏览器中运行时,您的代码将打印2 然而,这样的var a=2语句:它不创建全局对象的属性。因此this.a尝

如果call()中传递null或nothing,是否将其视为隐式绑定? 以下代码的输出应该是什么?不是应该是2吗?我正在变得“未定义”

function foo() {
console.log( this.a );
}

var a = 2;

foo.call( null ); // 2

这是一个隐式绑定,您可以使用
console.log(this)检查它。它打印全局对象。因此,在我的浏览器中运行时,您的代码将打印
2


然而,这样的
var a=2语句:它不创建全局对象的属性。因此
this.a
尝试访问一个不存在的成员,这会导致
未定义的

这是一个隐式绑定,您可以使用
console.log(这)。它打印全局对象。因此,在我的浏览器中运行时,您的代码将打印
2


然而,这样的
var a=2语句:它不创建全局对象的属性。因此,
this.a
尝试从mdn访问一个不存在的成员,这会导致
未定义的

;mdn中的“如果方法是非严格模式下的函数,则null和undefined将替换为全局对象”;“如果方法是非严格模式下的函数,则null和undefined将替换为全局对象”附加信息:交互式节点控制台在创建全局对象时也返回2(非严格代码)。附加信息:交互式节点控制台在创建全局对象时也返回2(非严格代码)。