如何用最简洁的方式检验一个对象是否为字符串?
发布于 4 年前 作者 daGaiGuanYu 2369 次浏览 来自 问答

怎样检验字符串最简洁?

假设写一个函数 isString,应满足:

  • isString(’’) == true
  • isString(new String()) == true
  • isString(new (class extends String {}) == true
  • isString(undefined) == false
  • isString(null) == false
8 回复
function isString(str) {
  return str instanceof String || str != null && str != undefined &&  str.constructor == String
}

这样可以吗,老哥们

typeof str === ‘string’ 就可以了,string 是原始类型,你用 instanceOf String 没用的

@rrbe 试试 typeof new String('str')

用 Object.prototype.toString.call(str) == ‘[object String]’

这个办法不仅可以用于 string,对于其他的任意类型都可以准确判断。

@myy 这个不戳~

我挺好奇 new String(‘str’) 和 ‘str’ 是同一个东西吗。。。

image.png

underscore里有的,node库里也有的。

@zhangxh1023 不是

typeof('str') // string
typeof(new String('str')) // object
回到顶部