如何检测变量是否是一个字符串

如何检测变量是否是字符串?


这是ECMAScript规范中指定的用于确定内部[[Class]]属性的方式。

if( Object.prototype.toString.call(myvar) == '[object String]' ) {
   // a string
}

8.6.2对象内部属性和方法

本规范针对每种内置对象定义[[Class]]内部属性的值。 主对象的[[Class]]内部属性的值可以是除“Arguments”,“Array”,“Boolean”,“Date”,“Error”,“Function”,“JSON”之外的任何字符串值。 ,“数学”,“数字”,“对象”,“RegExp”“字符串” 。 [[Class]]内部属性的值用于内部区分不同类型的对象。 请注意,除了通过Object.prototype.toString(见15.2.4.2)外,本规范没有提供任何方法让程序访问该值。


有关如何有用的示例,请考虑以下示例:

var str = new String('some string');

alert( typeof str ); // "object"

alert( Object.prototype.toString.call(str) ); // "[object String]"

如果你使用typeof ,你会得到"object"

但是如果你使用上面的方法,你会得到正确的结果"[object String]"


你可以使用typeof来做到这一点,但对于很多事情来说,这是糟糕的设计。

if (typeof myVar == "string") {
    alert("I'm a string!");
}

使用typeof。

if (typeof foo == 'string')
链接地址: http://www.djcxy.com/p/94973.html

上一篇: how to detect if variable is a string

下一篇: Check if all elements in array are strings