var x = 'foo';
var y = 'bar';
var isItDefined = (x !== (x = y)); // true, once
var isItAssigned = (x === 'bar'); // true
这个成语对于使用Immutable.js检查不变性突变非常方便,即
if (myMap !== (myMap = myMap.set('x', 2))) { changed.emit(); }
IIRC如果变异没有实际变化,则不可变映射实现会自行返回。
除非潜在地分析这是多么丑陋/“聪明”,否则我很好奇这是否是ES5 +中明确定义的行为。似乎依赖于从左到右的评估,就像表达为
的结构一样var thisWontWork = ((x = y) !== x);
不会评估为true
。
适用于Chrome(40)。