我在wtfjs网站上发现以下代码是合法的JavaScript。
",,," == Array((null,'cool',false,NaN,4)); // true
我认为参数(null,'cool',false,NaN,4)
看起来像一个元组,但是 JavaScript 并没有元组!
在我的 JavaScript 控制台上进行了一些快速测试,结果如下。
var t = (null,'cool',false,NaN,4); // t = 4
(null,'cool',false,NaN,4) === 4; // true
(alert('hello'), 42); // shows the alert and returns 42
它似乎与分号;
分隔的语句列表完全一样,只是返回最后一个语句的值。
有没有一个描述这种语法及其语义的参考资料?它为什么存在,即应该在什么情况下使用?
var a = isTrue ? (b=f(c), g(b)) : (b=g(c), f(b))
。虽然不明智,但有时为了简洁的代码而非可读性,或者为了快速调试而有用。 - okdewit