Задать вопрос
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? Объясните , что тут происходит?
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Простой 2 комментария
Решения вопроса 1
twobomb
@twobomb
typeof возвращает строку, а не тип
typeof("s") == "string" //true
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Павлины, говоришь? Хех! (с) тов. Сухов.

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

"string" != "function", и это безотносительно того, что String без typeof().
Ответ написан
Комментировать
@BATPYIIIKOB
PHP, JS
У вас
typeof(s) == String  // String - переменная??? и вообще ключевые слова лучше не юзать

тогда уж так :
function f(s){
  // document.write(typeof(s)); // ! ! ! ( ( 1 ) ) ! ! !
  var m,
        String = "string"
  typeof(s) === String ? m = "String" : m = "No, this is not a string";      // ! ! ! ( ( 2 ) ) ! ! ! 
  document.write(m); 
};
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы