在Javascript中做什么 - valuesLength =(values.length,undefined); - 做什么?

时间:2011-08-30 20:12:38

标签: java javascript gwt

我正在使用GWT,翻译的javascript在多个地方都有此功能

valuesLength = (values.length , undefined);

我认为如果对象确实存在,那么它是undefined的设置但是在浏览器中进行调试虽然存在值对象且长度值为valuesLength总是等于undefined。

2 个答案:

答案 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只是一个属性,因此此代码似乎没有用处。如果它是一种方法,那么它可能有副作用。

大多数人不使用逗号运算符,因为它会产生令人困惑的代码。我怀疑这只是一个基本上是编译器产生奇怪代码的例子,因为它的优化器并不完美。