Как определить, является ли переменная строкой?
Как определить, является ли переменная строкой
Ответ 1
Это значение указано в спецификации ECMAScript для определения внутреннего свойства [[Class]].
if( Object.prototype.toString.call(myvar) == '[object String]' ) {
// a string
}
От 8.6.2 Внутренние свойства и методы объекта:
Значение внутреннего свойства [[Class]] определяется этой спецификацией для каждого типа встроенного объекта. Значение внутреннего свойства [[Class]] для объекта-хозяина может быть любым значением String, за исключением одного из "Аргументов", "Массив", "Логическое", "Дата", "Ошибка", "Функция", "JSON", "Math", "Number", "Object", "RegExp", и "String" . Значение внутреннего свойства [[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]"
.
Ответ 2
Вы можете использовать typeof
для этого, но для многих вещей это плохой дизайн.
if (typeof myVar == "string") {
alert("I'm a string!");
}
Ответ 3
Используйте typeof.
if (typeof foo == 'string')
Ответ 4
var str = new String("some string");
if(str.constructor.name === "String")
{
alert("I'm a string!");
}
или просто:
if(str.constructor === String)
{
alert("I'm a string!");
}
Ответ 5
Я не думаю, что нам нужно рассматривать new String('some string')
как строку, потому что если мы попробуем:
new String('abc')==='abc'
Он вернет false!
Но если мы попробуем:
String('abc')==='abc'
Он вернет true.
Ответ 6
typeof('yourstring');// returns string
Ответ 7
Используйте alert(typeof "hello");
alert(typeof 123);
Ref.: здесь.
Ответ 8
('str'.constructor === String) && alert('its a string!');