CNode

如何用最简洁的方式检验一个对象是否为字符串?

问答
DdaGaiGuanYu发布于5 年前最后回复5 年前8 回复3135 浏览0 收藏

怎样检验字符串最简洁?

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

  • isString('') == true
  • isString(new String()) == true
  • isString(new (class extends String {}) == true
  • isString(undefined) == false
  • isString(null) == false
查看回复

回复 (8)

D
daGaiGuanYu#1·5 年前
function isString(str) {
  return str instanceof String || str != null && str != undefined &&  str.constructor == String
}

这样可以吗,老哥们

R
rrbe#2·5 年前

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

M
myy#4·5 年前

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

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

Z
zhangxh1023#6·5 年前

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

R
raoyaoiau#7·5 年前

image.png

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

D
daGaiGuanYu#8·5 年前
引用 zhangxh1023我挺好奇 new String('str') 和 'str' 是同一个东西吗。。。

@zhangxh1023 不是

typeof('str') // string
typeof(new String('str')) // object
参与回复
登录后即可参与回复。登录