В 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), это то же самое, что бы вы ни плавали на лодке. Вы можете получить полное чтение и какие строки ожидать от типов здесь.