JavaScript中的逗号该如何理解?
《javascript权威指南(6版)》说逗号运算符(,):先计算左边的操作数,然后计算右边的操作数,最后返回右操作数的值。
比如 var a=(1+1,2+2,3+3); 结果是6。
可是当逗号出现在其他的地方,好像就不是先算左边的,再算右边的,返回右边的了。
比如函数调用中,Math.max(x,y,z)。这里的逗号就是分隔函数参数。
还有声明变量时,var a=1,b=2,c=3。这里的逗号也是起分隔的作用。
请教各位逗号“,”应该怎么去理解?难道是依据逗号使用环境而定?
谢谢各位,求解惑,逗号让我感觉很晕。
网上找的例子:
1.alert(2*5, 2*4) 输出10而不是8
2.var a = 10, b = 20;
function CommaTest(){
return a++, b++, 10;
}
var c = CommaTest();
那alert()接收到的参数就是z
作者:RednaxelaFX
链接:https://www.zhihu.com/question/27620371/answer/37408446
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
比如 var a=(1+1,2+2,3+3); 结果是6。
可是当逗号出现在其他的地方,好像就不是先算左边的,再算右边的,返回右边的了。
比如函数调用中,Math.max(x,y,z)。这里的逗号就是分隔函数参数。
还有声明变量时,var a=1,b=2,c=3。这里的逗号也是起分隔的作用。
请教各位逗号“,”应该怎么去理解?难道是依据逗号使用环境而定?
谢谢各位,求解惑,逗号让我感觉很晕。
网上找的例子:
1.alert(2*5, 2*4) 输出10而不是8
2.var a = 10, b = 20;
function CommaTest(){
return a++, b++, 10;
}
var c = CommaTest();
alert(c); 返回10
alert(x, y, z)
是一个函数调用表达式,其中x, y, z是“参数列表”,并不用于“返回最后一个值”。
alert()只接收一个参数。其余参数都被忽略。
return x, y, z
则是一个return语句,里面包含一个逗号运算符分隔的表达式。此时的x, y, z用于返回最后一个值。
如果题主写:alert((x, y, z))
作者:RednaxelaFX
链接:https://www.zhihu.com/question/27620371/answer/37408446
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。