我最近阅读了一段javascript代码,我发现了这一行:
var myVar = (12,5); // myVar==5 now
这个奇怪的语法是什么:(x, y)
?
答案 0 :(得分:7)
逗号运算符
,
有left-to-right associativity
。两个表达 用逗号分隔从左到右进行评估。左操作数是 总是评估,所有副作用都在右边完成 操作数被评估。
表达式:
var myVar = (12, 5);
相当于:
var myVar = 5;
注意,在上面的表达式中,括号将覆盖,
优先于=
的优先级,否则不加括号,var myVar = 12, 5
等表达式等同于var myVar = 12
。
修改:我猜您可以找到以下原因:
当第一个表达式有一些副作用时:
var myVar = ( expression1, expression2);
在将expression1
的结果分配给expression2
之前,myVar
可能会产生一些副作用,例如: var mayVar = (++i, i + j);
在此表达式中,++i
添加j
后会增加值,结果将分配给mayVar
。
修正了错误或错误:
可能是某些错误修复/或在测试期间,而不是分配x
开发人员想要分配y
但忘记以删除(
)
公共依赖之前。
var myVar = (x, y);
我还发现了一个错误的错误,其中提问者忘记写功能相同而不是写
var myVar = fun(x, y);
他的错字:
var myVar = (x, y);
在链接的question中。
这不是JavaScript链接,而是非常有趣的C ++链接,其中讨论了合法/或可能使用逗号运算符What is the proper use of the comma operator?
答案 1 :(得分:1)
它被称为逗号运算符,我们通常在我们想要在一个表达式中运行2个语句时使用它们,它会计算2个操作数(从左到右)并返回第二个操作数的值。
在此处查看:comma operator
如果您想了解它的用途,请阅读this question。
答案 2 :(得分:0)
这称为comma operator。
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值。
以下是一些例子:
var a = (12,3) //a =3;
var b = (a+2, 2) //a=5, b= 2
var c = (a,b) // a= 5, b=2, c=2.