* Proposal: Logical Assignment Operators https://github.com/jridgewell/proposal-logical-assignment I'm bringing it [back](https://github.com/babel/babel/pull/516). 😉 * Use expectPlugin * Add to stage 0 preset * Add logicalAssignment missing plugin log stuff
40 lines
852 B
JavaScript
40 lines
852 B
JavaScript
var _deep$obj, _deep$obj2, _deep$obj3, _deep$obj4;
|
|
|
|
var x = 0;
|
|
var sets = 0;
|
|
var obj = {
|
|
get x() {
|
|
return x;
|
|
},
|
|
|
|
set x(value) {
|
|
sets++;
|
|
x = value;
|
|
}
|
|
|
|
};
|
|
assert.equal(obj.x || (obj.x = 1), 1);
|
|
assert.equal(sets, 1);
|
|
assert.equal(obj.x || (obj.x = 2), 1);
|
|
assert.equal(sets, 1);
|
|
assert.equal(obj.x && (obj.x = 0), 0);
|
|
assert.equal(sets, 2);
|
|
assert.equal(obj.x && (obj.x = 3), 0);
|
|
assert.equal(sets, 2);
|
|
var gets = 0;
|
|
var deep = {
|
|
get obj() {
|
|
gets++;
|
|
return obj;
|
|
}
|
|
|
|
};
|
|
assert.equal((_deep$obj = deep.obj).x || (_deep$obj.x = 1), 1);
|
|
assert.equal(gets, 1);
|
|
assert.equal((_deep$obj2 = deep.obj).x || (_deep$obj2.x = 2), 1);
|
|
assert.equal(gets, 2);
|
|
assert.equal((_deep$obj3 = deep.obj).x && (_deep$obj3.x = 0), 0);
|
|
assert.equal(gets, 3);
|
|
assert.equal((_deep$obj4 = deep.obj).x && (_deep$obj4.x = 3), 0);
|
|
assert.equal(gets, 4);
|