Javascript 测试一个变量是否是基元而不是对象?

Javascript 测试一个变量是否是基元而不是对象?,javascript,Javascript,是否可以测试一个变量以确定它是否是原语 我看到了很多关于测试变量以确定它是否是对象的问题,但没有测试原语的问题 这个问题是学术性的,我实际上不需要从我自己的代码执行这个测试。我只是想对JavaScript有更深的理解。要测试任何原语: function isPrimitive(test) { return test !== Object(test); } 例如: isPrimitive(100); // true isPrimitive(new Number(100)); // fal

是否可以测试一个变量以确定它是否是原语

我看到了很多关于测试变量以确定它是否是对象的问题,但没有测试原语的问题


这个问题是学术性的,我实际上不需要从我自己的代码执行这个测试。我只是想对JavaScript有更深的理解。

要测试任何原语:

function isPrimitive(test) {
    return test !== Object(test);
}
例如:

isPrimitive(100); // true
isPrimitive(new Number(100)); // false

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

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

如果
value
是一个对象,
object(value)
将是同一个对象,因此
value===object(value)
。如果值不是对象,
value!==对象(值)
,因为它们将具有不同的类型

所以你可以用

对象(值)!=价值

一种特定类型的基元,或者只是任何旧的非对象基元?您是否尝试过使用myVar的类型!='对象'&&typeof myVar!='字符串“…?相关文档:@AnthonyGrist-任何旧的都不是对象原语。这是许多问题的重复。当我觉得它的性能开销与代码简单性的代价相同时,我是对的吗?@Zoltán Tamási,是的,你是对的,大约比checkNot worth编辑的instanceof慢7倍,但是您不需要
(与函数表达式相反,如
var isPrimitive=function(test){…};
)。对象(未定义)!=未定义的是true@ArtemiyStagnantIce Alexeew你没料到吗?Undefined是一种基本类型。当我觉得它的性能开销与代码简单性的代价一样大时,我说得对吗?