📜  如何在 JavaScript 中检查该值是否为原始值?(1)

📅  最后修改于: 2023-12-03 15:08:39.351000             🧑  作者: Mango

在 JavaScript 中,有两种类型的值:原始值和对象值。原始值包括字符串、数字、布尔、null 和 undefined。对象值包括对象、数组和函数。

判断一个值是否为原始值,可以使用 typeof 运算符。如果 typeof 返回的结果是 "string"、"number"、"boolean"、"undefined" 或 "symbol",那么该值是原始值。例如:

typeof "Hello World"; // "string"
typeof 123; // "number"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object",这是一个历史遗留问题,实际上 null 是一个原始值
typeof Symbol(); // "symbol"

需要注意的是,typeof 返回的结果对于 null 是 "object",这是一个历史遗留问题,实际上 null 是一个原始值。

此外,还有一个更加严格的方法可以判断一个值是否为原始值,也就是使用 Object.prototype.toString.call 方法。这个方法会返回一个包含值的类型信息的字符串,例如 "[object String]"。可以使用正则表达式来判断字符串是否以 "[object " 开头,例如:

var isPrimitive = function(value) {
  return Object.prototype.toString.call(value).match(/^\[object\s(.*)\]$/)[1].toLowerCase();
};
 
isPrimitive("Hello World"); // "string"
isPrimitive(123); // "number"
isPrimitive(true); // "boolean"
isPrimitive(undefined); // "undefined"
isPrimitive(null); // "null"
isPrimitive(Symbol()); // "symbol"

这种方法会更加严格,但也更加复杂,需要使用正则表达式来处理结果。在大多数情况下,使用 typeof 运算符已经足够了。