Подтвердить что ты не робот

Почему "typeof" не требует скобок?

Есть ли разница между typeof (myVariable) по сравнению с typeof myVariable?

Оба работают, но, исходя из PHP, я не понимаю, почему эта функция может использовать скобки или нет.

4b9b3361

Ответ 1

Ключевое слово typeof представляет собой оператор в Javascript программировании.

Правильное определение оператора typeof в спецификации :

typeof[(]expression[)] ;

Это причина использования typeof как typeof(expression) или typeof expression.

Придя к тому, что это было реализовано как таковое, вероятно, позволит разработчику справиться с уровнем видимости в его коде. Таким образом, можно использовать чисто условное выражение, используя typeof:

if ( typeof myVar === 'undefined' )
  // ...
;

Или сформулировать более сложное выражение с помощью () для удобства чтения:

var isTrue = ( typeof ( myVar = anotherVar ) !== 'undefined' ) && ( myVar === true ) );

EDIT:

В некоторых случаях использование скобок с оператором typeof делает написанный код менее склонным к двусмысленности.

Возьмем, например, следующее выражение, в котором оператор typeof используется без круглых скобок. Вернул бы typeof тип результата конкатенации между пустым строковым литералом и номером или типом строкового литерала?

typeof "" + 42

Рассматривая определение оператора, указанное выше, и приоритет операторов typeof и +, кажется, что предыдущее выражение эквивалентно:

typeof("") + 42 // Returns the string `string42`

В этом случае использование круглых скобок с typeof приведет к большей ясности в том, что вы пытаетесь выразить:

typeof("" + 42) // Returns the string `string`