2016-12-06 1 views
3

Я изучаю Javascript, и я наткнулся на что-то, что кажется «причудливым».Почему typeof оператора вместо свойства?

Почему нет такого типа недвижимости, как .length или .name? Похоже, что это должно быть в этой категории. Вместо этого он считается оператором вроде знака равенства =

Возможно, есть очевидное объяснение или я что-то не понимаю (легко можно).

+0

Возможный дубликат [Обнаружение неопределенного свойства объекта] (http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property) – Ionut

ответ

9

Если это свойство, вы не сможете проверить, было ли что-то undefined, поскольку неопределенные значения не могут иметь свойств.

Хуже того, если переменная была необъявлена, тогда попытка проверить свойство на ней приведет к вызову ReferenceError.

+0

Хорошо спасибо тонне, что имеет смысл! Я это запомню. – DR01D

2

С typeof является универсальным в JavaScript (то есть вы можете использовать его против любой переменной), он мог быть реализован как свойство объекта. Но если бы это было так, вы бы не смогли назвать его по типам null и undefined.

if(someNullVariable.typeof . . .) { . . . } // error 

Но, так как он является оператором, вы можете использовать его независимо от того, что вы проверяете:

if(typeof someNullVariable === "null") { . . . } // Match! 
+0

Хорошо, я вижу, это делает его более полезным на практике. Благодаря! – DR01D

Смежные вопросы