JavaScript 中如何检查值是否为原始值?

什么是原始值?

在 JavaScript 中,原始值是指不能被继续操作和解构的数据类型。JavaScript 中的原始值有:字符串、数字、布尔值、null 和 undefined。

当我们需要检查一个值是否为原始值时,通常会使用 typeof 操作符。

typeof 'hello'; // "string"

typeof 123; // "number"

typeof true; // "boolean"

typeof null; // "object"

typeof undefined; // "undefined"

我们可以看到,原始值的类型与其对应的 typeof 返回值相同。但需要注意的是,null 的类型返回是 object,这是一个历史遗留问题。

如何检查一个值是否为原始值?

方法一:使用 typeof 操作符

如上所述,我们可以使用 typeof 操作符来检查一个值是否为原始值。

// 检查一个字符串是否为原始值

if (typeof str === 'string') {

// str 是一个字符串原始值

}

// 检查一个数字是否为原始值

if (typeof num === 'number') {

// num 是一个数字原始值

}

// 检查一个布尔值是否为原始值

if (typeof bool === 'boolean') {

// bool 是一个布尔值原始值

}

方法二:使用 Object.prototype.toString 方法

除了使用 typeof 操作符之外,我们还可以使用 Object.prototype.toString 方法来检查一个值是否为原始值。

function isPrimitive(value) {

return Object.prototype.toString.call(value) === '[object String]' ||

Object.prototype.toString.call(value) === '[object Number]' ||

Object.prototype.toString.call(value) === '[object Boolean]' ||

Object.prototype.toString.call(value) === '[object Null]' ||

Object.prototype.toString.call(value) === '[object Undefined]';

}

// 检查一个字符串是否为原始值

if (isPrimitive(str)) {

// str 是一个字符串原始值

}

// 检查一个数字是否为原始值

if (isPrimitive(num)) {

// num 是一个数字原始值

}

// 检查一个布尔值是否为原始值

if (isPrimitive(bool)) {

// bool 是一个布尔值原始值

}

这里我们通过自定义 isPrimitive 函数,使用 Object.prototype.toString 方法来检查一个值是否为原始值。需要注意的是,nullundefined 也被判断为原始值。

方法三:使用 instanceof 操作符

除了使用 typeofObject.prototype.toString 方法之外,我们还可以使用 instanceof 操作符来检查一个值是否为原始值。但需要注意的是,对于 nullundefined,无法使用 instanceof 来判断。

// 检查一个字符串是否为原始值

if (str instanceof String) {

// str 是一个字符串原始值

}

// 检查一个数字是否为原始值

if (num instanceof Number) {

// num 是一个数字原始值

}

// 检查一个布尔值是否为原始值

if (bool instanceof Boolean) {

// bool 是一个布尔值原始值

}

小结

JavaScript 中的原始值是指不能被继续操作和解构的数据类型,包括字符串、数字、布尔值、null 和 undefined。我们可以使用 typeof 操作符、Object.prototype.toString 方法或 instanceof 操作符来检查一个值是否为原始值。需要注意的是,对于 nullundefined,使用 typeof 返回值为 object,使用 instanceof 操作符无法判断。