测试变量是原始而不是对象?

Chr*_*now 28 javascript

是否可以测试变量以查看它是否是原始变量?

我已经看到很多关于测试变量的问题,看看它是否是一个对象,而不是测试一个原语.

这个问题是学术性的,我实际上并不需要从我自己的代码中执行此测试.我只是想更深入地了解JavaScript.

kie*_*tts 41

测试任何原语:

function isPrimitive(test) {
    return (test !== Object(test));
};
Run Code Online (Sandbox Code Playgroud)

例:

isPrimitive(100); // true
isPrimitive(new Number(100)); // false
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/kieranpotts/dy791s96/

  • 当我认为代码简单性的代价是性能开销时,我是对的吗? (2认同)
  • @Artemiy StagnantIce Alexeew 你没想到会这样吗?未定义是原始类型。 (2认同)

Ori*_*iol 12

Object 接受一个参数,如果它是一个对象则返回,否则返回一个对象.

然后,您可以使用严格的相等比较,比较类型和值.

如果value是一个对象,那么Object(value)将是同一个对象value === Object(value).如果value不是对象,value !== Object(value)因为它们将具有不同的类型.

所以你可以使用

Object(value) !== value
Run Code Online (Sandbox Code Playgroud)

  • 当我认为代码简单性的代价是性能开销时,我是对的吗? (2认同)