什么是原始值?
在 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
方法来检查一个值是否为原始值。需要注意的是,null
和 undefined
也被判断为原始值。
方法三:使用 instanceof 操作符
除了使用 typeof
和 Object.prototype.toString
方法之外,我们还可以使用 instanceof
操作符来检查一个值是否为原始值。但需要注意的是,对于 null
和 undefined
,无法使用 instanceof
来判断。
// 检查一个字符串是否为原始值
if (str instanceof String) {
// str 是一个字符串原始值
}
// 检查一个数字是否为原始值
if (num instanceof Number) {
// num 是一个数字原始值
}
// 检查一个布尔值是否为原始值
if (bool instanceof Boolean) {
// bool 是一个布尔值原始值
}
小结
JavaScript 中的原始值是指不能被继续操作和解构的数据类型,包括字符串、数字、布尔值、null 和 undefined。我们可以使用 typeof
操作符、Object.prototype.toString
方法或 instanceof
操作符来检查一个值是否为原始值。需要注意的是,对于 null
和 undefined
,使用 typeof
返回值为 object
,使用 instanceof
操作符无法判断。