JavaScript的一些奇怪行为,任何人都可以解释一下

Pra*_*yay 2 javascript

请帮助我理解下面的代码,如何计算'a','b'和'c'的值.

var a = (1,5 + 10) * 5; //returns 75
var b = (0, "150", 30, 20, 38 + 10); //returns 48
var c = (5 & 3 + 10); // returns 5
Run Code Online (Sandbox Code Playgroud)

ick*_*fay 6

a设定为(1, 5 + 10) * 5.在顶层,这是一个乘法的表达,乘以1, 5 + 10通过5.1, 5 + 10使用首先计算的逗号运算符,1丢弃它,然后计算5 + 10,计算结果15,然后乘以5,屈服75.

b类似的工作,除了它有很多逗号.它评估了很多东西,丢弃了所有结果,最后继续评估最后一个,38 + 10给出了结果48.

c评估5 & 3 + 10.&优先级低于+,所以它实际上是5 & (3 + 10).3 + 1013,1101二进制; 5101二进制的.对这两个值进行按位AND会产生101,这5也就是结果.