В JavaScript typeof
есть оператор и функция. Он лучше используется как оператор или функция? Почему?
Typeof - оператор и функция
Ответ 1
typeof
является оператором. Вы можете легко проверить его, используя:
typeof(typeof)
Была typeof
функция, это выражение вернет строку 'function'
, но это приведет к синтаксической ошибке:
js> typeof(typeof);
typein:8: SyntaxError: syntax error:
typein:8: typeof(typeof);
typein:8: .............^
поэтому typeof
не может быть функцией. Вероятно, скобки-обозначение typeof(foo)
заставило вас думать, что typeof
является функцией, но синтаксически эти скобки не являются вызовом функции - они используются для группировки, как и (2 + 3) *2
. Фактически вы можете добавить любое количество из них, которое вы хотите:
typeof(((((foo))))); // is equal to typeof foo;
Ответ 2
Я думаю, что вы выбираете то, что хотите, на основе ясности, как привычка, которую я обычно использую в качестве оператора следующим образом, потому что это довольно ясно, по крайней мере, IMO:
if(typeof thing === "string") {
alert("this is a string");
}
if(typeof thing === "function") {
alert("this is a function");
}
Это противоречит этому формату:
if(typeof(thing) === "string") {
alert("this is a string");
}
Для меня это немного медленнее читать. Если вы делаете typeof(thing)
, это то же самое, что бы вы ни плавали на лодке. Вы можете получить полное чтение и какие строки ожидать от типов здесь.