Javascript 在对象方法调用中使用两组括号的原因是什么
我目前正在学习和教育自己使用javascript,我刚刚发现一个简单的代码,它使用这个“()”;”这叫什么,没有找到太多关于它的信息,它是什么,它是如何使用的,这里是我找到的代码:Javascript 在对象方法调用中使用两组括号的原因是什么,javascript,css,html,Javascript,Css,Html,我目前正在学习和教育自己使用javascript,我刚刚发现一个简单的代码,它使用这个“()”;”这叫什么,没有找到太多关于它的信息,它是什么,它是如何使用的,这里是我找到的代码: “严格使用”; 设obj,方法; obj={ go:function(){alert(this);} }; obj.go(); (obj.go)(); (方法=obj.go)(); (obj.go | | obj.stop)()单独使用,括号是分组运算符。它们将表达式分组以控制计算的顺序或优先级。你可以考虑一下 /
“严格使用”;
设obj,方法;
obj={
go:function(){alert(this);}
};
obj.go();
(obj.go)();
(方法=obj.go)();
(obj.go | | obj.stop)()代码>单独使用,括号是分组运算符。它们将表达式分组以控制计算的顺序或优先级。你可以考虑一下
// example // is the same as
(obj.go)(); obj.go();
(method = obj.go)(); method = obj.go; method();
(obj.go || obj.stop)(); // calling go or stop after assinging to a temp variable
括号是分组运算符,单独使用。它们将表达式分组以控制计算的顺序或优先级。你可以考虑一下
// example // is the same as
(obj.go)(); obj.go();
(method = obj.go)(); method = obj.go; method();
(obj.go || obj.stop)(); // calling go or stop after assinging to a temp variable
它只是控制执行的顺序。你也可以这样写,让它更清楚:
// (obj.go)();
obj.go();
// (method = obj.go)();
method = obj.go;
method();
// (obj.go || obj.stop)();
var method = obj.go || obj.stop;
method();
它只是控制执行的顺序。你也可以这样写,让它更清楚:
// (obj.go)();
obj.go();
// (method = obj.go)();
method = obj.go;
method();
// (obj.go || obj.stop)();
var method = obj.go || obj.stop;
method();
这段代码正在演示如何将此
绑定到函数执行内容中(在本例中为go
)。它表明,简单地在方法周围加括号并不会改变这种行为:this
仍然绑定到obj
只要括号围绕涉及运算符的表达式,情况就会发生变化,并且在不使用特定的this
绑定的情况下调用表达式生成的方法:默认值适用(未定义的)
另一种变体如下:
(0,obj.go)();
这里是逗号运算符,因此我们在表达式中:此
不再绑定到方法调用中的obj
。这段代码正在演示此
如何绑定到函数执行内容中(在本例中为go
)。它表明,简单地在方法周围加括号并不会改变这种行为:this
仍然绑定到obj
只要括号围绕涉及运算符的表达式,情况就会发生变化,并且在不使用特定的this
绑定的情况下调用表达式生成的方法:默认值适用(未定义的)
另一种变体如下:
(0,obj.go)();
在这里,逗号运算符起作用,因此我们在表达式中:this
不再绑定到方法调用中的obj
。回答得很好。最后一个关于“temp变量”的问题有点令人不快。在内部,一个引用已经存在,并且一个或另一个已被访问,但未定义新变量。@RandyCasburn认为它存在是有帮助的。如果您更改此选项(method=obj.go)(;)进入这个“method=obj.go();”,结果从“[object Window]”更改为“[object object]”请重试urself@walee我不太明白method=obj.go()。最后一个关于“temp变量”的问题有点令人不快。在内部,一个引用已经存在,并且一个或另一个已被访问,但未定义新变量。@RandyCasburn认为它存在是有帮助的。如果您更改此选项(method=obj.go)(;)进入这个“method=obj.go();”,结果从“[object Window]”更改为“[object object]”请重试urself@walee我不太明白method=obj.go()。