检查 javascript 中的字符串值

Check for string value in javascript

本文关键字:字符串 javascript 检查      更新时间:2023-09-26

在JS中,我们有两种方法可以检查给定的值是否为字符串:

function isString1(value) {
  return typeof value === 'string';
}

function isString2(value) {
  return Object.prototype.toString.call(value) === "[object String]";
}

哪个是有效的实施,为什么?

谢谢!

这取决于您是否要考虑使用 String 构造函数创建的字符串,例如

new String("hello");

第一种方法将为纯字符串返回 true,为构造字符串返回false

typeof "hello" === "string" // true
typeof new String("hello") === "string" // false

而第二种方法在两种情况下都会返回true

Object.prototype.toString.call("hello") === "[object String]" // true
Object.prototype.toString.call(new String("hello")) === "[object String]" // true
使用

构造字符串并不常见,因此对于大多数实际目的,使用更简单的方法就可以了。


还值得注意的是,如果有人修改Object.prototype.toString,第二种方法的行为可能会改变(顺便说一下,这是一件邪恶的事情(。如果有人这样做,例如:

Object.prototype.toString = function(){ return "This is evil"; }

然后

Object.prototype.toString.call("hello") === "This is evil"

typeof运算符已融入语法中,不容易受到这种可能性的影响。