Skip to content

Commit b9d3928

Browse files
committed
util: simplify isPrimitive
Everything that is not an object should be a primitive. PR-URL: #739 Reviewed-By: Trevor Norris <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]>
1 parent 2c3121c commit b9d3928

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

lib/util.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -566,11 +566,7 @@ exports.isFunction = isFunction;
566566

567567
function isPrimitive(arg) {
568568
return arg === null ||
569-
typeof arg === 'boolean' ||
570-
typeof arg === 'number' ||
571-
typeof arg === 'string' ||
572-
typeof arg === 'symbol' || // ES6 symbol
573-
typeof arg === 'undefined';
569+
typeof arg !== 'object' && typeof arg !== 'function';
574570
}
575571
exports.isPrimitive = isPrimitive;
576572

test/parallel/test-util.js

+19
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,25 @@ assert.equal(true, util.isError(Object.create(Error.prototype)));
5151
// isObject
5252
assert.ok(util.isObject({}) === true);
5353

54+
// isPrimitive
55+
assert.equal(false, util.isPrimitive({}));
56+
assert.equal(false, util.isPrimitive(new Error));
57+
assert.equal(false, util.isPrimitive(new Date()));
58+
assert.equal(false, util.isPrimitive([]));
59+
assert.equal(false, util.isPrimitive(/regexp/));
60+
assert.equal(false, util.isPrimitive(function(){}));
61+
assert.equal(false, util.isPrimitive(new Number(1)));
62+
assert.equal(false, util.isPrimitive(new String('bla')));
63+
assert.equal(false, util.isPrimitive(new Boolean(true)));
64+
assert.equal(true, util.isPrimitive(1));
65+
assert.equal(true, util.isPrimitive('bla'));
66+
assert.equal(true, util.isPrimitive(true));
67+
assert.equal(true, util.isPrimitive(undefined));
68+
assert.equal(true, util.isPrimitive(null));
69+
assert.equal(true, util.isPrimitive(Infinity));
70+
assert.equal(true, util.isPrimitive(NaN));
71+
assert.equal(true, util.isPrimitive(Symbol('symbol')));
72+
5473
// _extend
5574
assert.deepEqual(util._extend({a:1}), {a:1});
5675
assert.deepEqual(util._extend({a:1}, []), {a:1});

0 commit comments

Comments
 (0)