我正在使用GWT,翻译的javascript在多个地方都有此功能
valuesLength = (values.length , undefined);
我认为如果对象确实存在,那么它是undefined
的设置但是在浏览器中进行调试虽然存在值对象且长度值为valuesLength总是等于undefined。
答案 0 :(得分:2)
因为逗号运算符从左到右计算其操作数并返回最右边操作数的值。
(values.length , undefined)
^^ // will output undefined
MDN参考(现在不能正常工作)
如果目标是检查对象是否存在,那么正确的方法是
var valuesLength;
if(values && values.length) {
valuesLength = values.length;
}
// else valuesLength will be undefined by default
答案 1 :(得分:1)
“逗号运算符计算它的两个操作数(从左到右)并返回第二个操作数的值。”
http://javascriptweblog.wordpress.com/2011/04/04/the-javascript-comma-operator/
由于values.length
只是一个属性,因此此代码似乎没有用处。如果它是一种方法,那么它可能有副作用。
大多数人不使用逗号运算符,因为它会产生令人困惑的代码。我怀疑这只是一个基本上是编译器产生奇怪代码的例子,因为它的优化器并不完美。