这个问题是[] 的衍生,是 Array 的一个实例,但 "" 不是 String
鉴于
"" instanceof String; /* false */
String() instanceof String; /* false */
new String() instanceof String; /* true */
和
typeof "" === "string"; /* true */
typeof String() === "string"; /* true */
typeof new String() === "string"; /* false */
然后,如果我有一个变量abc
并且我想知道它是否是一个字符串,我可以这样做
if(typeof abc === "string" || abc instanceof String){
// do something
}
有没有更简单、更短、更原生的方法,还是我必须创建自己的函数?
function isStr(s){
return typeof s === "string" || s instanceof String;
}
if(isStr(abc)){
// do something
}