gpt4 book ai didi

javascript - 使用这种语法的原因是什么 (0, _.Em)();

转载 作者:可可西里 更新时间:2023-11-01 02:42:44 26 4
gpt4 key购买 nike

在调查 google plusone 脚本时,我多次看到以下语法:

(0, _.Em)();

假设 _.Em 是一个函数,上面的语句将导致调用该函数,这是很明显的。另一方面,如果它是未定义的,结果会不会与简单的 _.Em() 相同?

谁能阐明使用这种语法背后的想法是什么?

最佳答案

基本上,此语法允许在 window 对象而不是 _ 的上下文中调用 _.Em()

假设你有这段代码:

Foo = function() {
this.foo = "foo";
};

Foo.prototype.Em = function() {
alert(this.foo);
};

var _ = new Foo();

发出 _.Em() 将导致 Em()_ 的上下文中被调用。在函数内部,this 关键字将引用 _,因此将打印 foo

发出 (0, _.Em)() 将方法调用与对象分离,并在全局上下文中执行调用。在函数内部,this 关键字将引用 window,因此 undefined 将被打印,因为 window 没有有一个 foo 属性。

您可以在this fiddle 中测试这两种语法之间的差异。 .

关于javascript - 使用这种语法的原因是什么 (0, _.Em)();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9735424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com