107 lines
1.4 KiB
JavaScript
107 lines
1.4 KiB
JavaScript
var obj = {};
|
|
obj.x ||= 2;
|
|
assert.equal(obj.x, 2);
|
|
|
|
obj = {};
|
|
assert.equal(obj.x ||= 2, 2);
|
|
|
|
obj = { x: 1 };
|
|
obj.x ||= 2;
|
|
assert.equal(obj.x, 1);
|
|
|
|
obj = { x: 1 };
|
|
assert.equal(obj.x ||= 2, 1);
|
|
|
|
obj = { x: undefined }
|
|
obj.x ||= 2;
|
|
assert.equal(obj.x, 2);
|
|
|
|
obj = { x: undefined }
|
|
assert.equal(obj.x ||= 2, 2);
|
|
|
|
obj = { x: null }
|
|
obj.x ||= 2;
|
|
assert.equal(obj.x, 2);
|
|
|
|
obj = { x: null }
|
|
assert.equal(obj.x ||= 2, 2);
|
|
|
|
obj = { x: false }
|
|
obj.x ||= 2;
|
|
assert.equal(obj.x, 2);
|
|
|
|
obj = { x: false }
|
|
assert.equal(obj.x ||= 2, 2);
|
|
|
|
obj = { x: '' }
|
|
obj.x ||= 2;
|
|
assert.equal(obj.x, 2);
|
|
|
|
obj = { x: '' }
|
|
assert.equal(obj.x ||= 2, 2);
|
|
|
|
obj = { x: 0 }
|
|
obj.x ||= 2;
|
|
assert.equal(obj.x, 2);
|
|
|
|
obj = { x: 0 }
|
|
assert.equal(obj.x ||= 2, 2);
|
|
|
|
obj = undefined;
|
|
obj ||= 2;
|
|
assert.equal(obj, 2);
|
|
|
|
obj = undefined;
|
|
assert.equal(obj ||= 2 , 2);
|
|
|
|
obj = 1;
|
|
obj ||= 2;
|
|
assert.equal(obj, 1);
|
|
|
|
obj = 1;
|
|
assert.equal(obj ||= 2 , 1);
|
|
|
|
obj = null;
|
|
obj ||= 2;
|
|
assert.equal(obj, 2);
|
|
|
|
obj = null;
|
|
assert.equal(obj ||= 2 , 2);
|
|
|
|
obj = false;
|
|
obj ||= 2;
|
|
assert.equal(obj, 2);
|
|
|
|
obj = false;
|
|
assert.equal(obj ||= 2 , 2);
|
|
|
|
obj = '';
|
|
obj ||= 2;
|
|
assert.equal(obj, 2);
|
|
|
|
obj = '';
|
|
assert.equal(obj ||= 2 , 2);
|
|
|
|
obj = 0;
|
|
obj ||= 2;
|
|
assert.equal(obj, 2);
|
|
|
|
obj = 0;
|
|
assert.equal(obj ||= 2 , 2);
|
|
|
|
var calls = 0;
|
|
var q = { q: 3 };
|
|
var o = {
|
|
get p() {
|
|
calls++;
|
|
return q;
|
|
}
|
|
};
|
|
|
|
o.p.q ||= 2;
|
|
assert.equal(1, calls);
|
|
o.p.f ||= 2;
|
|
assert.equal(2, calls);
|
|
assert.equal(3, o.p.q);
|
|
assert.equal(2, o.p.f);
|