2017-01-12 5 views
4
if (typeof foo !== 'undefined') { 
    // Now we know that foo is defined, we are good to go. 
} 

typeof вычисляется в true или false на основании того, определяется или нет переменная foo.TypeOf логического выражения с оператором сравнения

Но, скажем, если foo !== 'undefined' вычисляется в true, то typeof из true должен вычисляться 'boolean'. Почему он оценивается до true или false?

ответ

6

Поскольку правила старшинства typeof и inquality операторов определяют, что это выражение анализируется как

(typeof foo) !== 'undefined' 

Для получения дополнительной информации см MDN page on operator precedence. typeof имеет приоритет 16; Inquality имеет приоритет 10. Более высокий приоритет typeof означает, что он «привязывается» более тесно к его операнду.

Кстати, почему у вас есть неопределенные переменные в вашем коде?

+1

Для справки: 'typeof (typeof foo! == 'undefined')' будет делать то, что думает OP. – ajm