Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象方法调用中使用两组括号的原因是什么_Javascript_Css_Html - Fatal编程技术网

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)()单独使用,括号是分组运算符。它们将表达式分组以控制计算的顺序或优先级。你可以考虑一下 /

我目前正在学习和教育自己使用javascript,我刚刚发现一个简单的代码,它使用这个“()”;”这叫什么,没有找到太多关于它的信息,它是什么,它是如何使用的,这里是我找到的代码:

“严格使用”;
设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()。