Как определить, является ли переменная строкой

Как определить, является ли переменная строкой?

Ответ 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!');