Задать вопрос
Muranx
@Muranx
кто понял this тот в цирке не смеётся

Почему в данном случае оператор typeof() не работает?

Здравствуйте !

function f(s){
  // document.write(typeof(s)); // ! ! ! ( ( 1 ) ) ! ! !
  var m
  typeof(s) == String ? m = "String" : m = "No, this is not a string";      // ! ! ! ( ( 2 ) ) ! ! ! 
  document.write(m); 
};

f("This is string") // No, this is not a string


Почему в данном коде ! ! ! ( ( 1 ) ) ! ! !, при document.write(typeof(s)); возвращается string, но когда я пытаюсь выяснить к какому типу относится аргумент ! ! ! ( ( 2 ) ) ! ! !, то срабатывает условие - что данный аргумент не является строкой? Даже если воспользоваться определением оператора typeof ( ) - возвращает строку, указывающую тип операнда то в условии ! ! ! ( ( 2 ) ) ! ! ! получается что "string" == String, что по идее должно равняться true? Объясните , что тут происходит?
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой 2 комментария
Ответ пользователя AUser0 К ответам на вопрос (3)
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Павлины, говоришь? Хех! (с) тов. Сухов.

Ну возьмите сделайте alert(String), увидите вывод function String() { [native code] }. typeof(String) тоже даст "function".
Каким же таким вывертом typeof('text') (который выдаст "string"), станет равно "function"?

"string" != "function", и это безотносительно того, что String без typeof().
Ответ написан
Комментировать