| function equalsNull(o) { |
| return o == null; |
| } |
| |
| noInline(equalsNull); |
| |
| function notEqualsNull(o) { |
| return o != null; |
| } |
| |
| noInline(notEqualsNull); |
| |
| function strictEqualsNull(o) { |
| return o === null; |
| } |
| |
| noInline(strictEqualsNull); |
| |
| function strictNotEqualsNull(o) { |
| return o !== null; |
| } |
| |
| noInline(strictNotEqualsNull); |
| |
| function equalsUndefined(o) { |
| return o == void 0; |
| } |
| |
| noInline(equalsUndefined); |
| |
| function notEqualsUndefined(o) { |
| return o != void 0; |
| } |
| |
| noInline(notEqualsUndefined); |
| |
| function strictEqualsUndefined(o) { |
| return o === void 0; |
| } |
| |
| noInline(strictEqualsUndefined); |
| |
| function strictNotEqualsUndefined(o) { |
| return o !== void 0; |
| } |
| |
| noInline(strictNotEqualsNull); |
| |
| function isFalsey(o) { |
| return !o; |
| } |
| |
| noInline(isFalsey); |
| |
| function test(func, iteration, object, outcome) { |
| var result = func(object); |
| if (result != outcome) |
| throw new Error("Bad result: " + result + " on iteration " + iteration); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(equalsNull, i, null, true); |
| test(equalsNull, i, undefined, true); |
| test(equalsNull, i, void 0, true); |
| test(equalsNull, i, {}, false); |
| test(equalsNull, i, makeMasquerader(), true); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(notEqualsNull, i, null, false); |
| test(notEqualsNull, i, undefined, false); |
| test(notEqualsNull, i, void 0, false); |
| test(notEqualsNull, i, {}, true); |
| test(notEqualsNull, i, makeMasquerader(), false); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(strictEqualsNull, i, null, true); |
| test(strictEqualsNull, i, undefined, false); |
| test(strictEqualsNull, i, void 0, false); |
| test(strictEqualsNull, i, {}, false); |
| test(strictEqualsNull, i, makeMasquerader(), false); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(strictNotEqualsNull, i, null, false); |
| test(strictNotEqualsNull, i, undefined, true); |
| test(strictNotEqualsNull, i, void 0, true); |
| test(strictNotEqualsNull, i, {}, true); |
| test(strictNotEqualsNull, i, makeMasquerader(), true); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(equalsUndefined, i, null, true); |
| test(equalsUndefined, i, undefined, true); |
| test(equalsUndefined, i, void 0, true); |
| test(equalsUndefined, i, {}, false); |
| test(equalsUndefined, i, makeMasquerader(), true); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(notEqualsUndefined, i, null, false); |
| test(notEqualsUndefined, i, undefined, false); |
| test(notEqualsUndefined, i, void 0, false); |
| test(notEqualsUndefined, i, {}, true); |
| test(notEqualsUndefined, i, makeMasquerader(), false); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(strictEqualsUndefined, i, null, false); |
| test(strictEqualsUndefined, i, undefined, true); |
| test(strictEqualsUndefined, i, void 0, true); |
| test(strictEqualsUndefined, i, {}, false); |
| test(strictEqualsUndefined, i, makeMasquerader(), false); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(strictNotEqualsUndefined, i, null, true); |
| test(strictNotEqualsUndefined, i, undefined, false); |
| test(strictNotEqualsUndefined, i, void 0, false); |
| test(strictNotEqualsUndefined, i, {}, true); |
| test(strictNotEqualsUndefined, i, makeMasquerader(), true); |
| } |
| |
| for (var i = 0; i < 10000; ++i) { |
| test(isFalsey, i, null, true); |
| test(isFalsey, i, undefined, true); |
| test(isFalsey, i, void 0, true); |
| test(isFalsey, i, {}, false); |
| test(isFalsey, i, makeMasquerader(), true); |
| } |