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

Die typeof ausgewertet true oder false basierend darauf, ob die Variable foo definiert ist oder nicht.Typeof der Booleschen Ausdruck mit Vergleichsoperator

aber sagen, wenn foo !== 'undefined' zu true auswertet, dann typeof von true zu 'boolean' bewerten soll. Warum wird true oder false ausgewertet?

Antwort

6

Da Vorrangregeln für die typeof und inquality Operatoren definieren, dass dieser Ausdruck als

(typeof foo) !== 'undefined' 

Weitere Informationen analysiert wird, finden Sie in der MDN page on operator precedence. typeof hat Vorrang 16; Inqualität hat Vorrang 10. Die höhere Priorität von typeof bedeutet, dass sie enger an ihren Operanden "bindet".

Übrigens, warum haben Sie undefinierte Variablen in Ihrem Code?

+1

Als Hinweis, 'typeof (typeof foo! == 'undefined') würde tun, was OP denkt. – ajm

Verwandte Themen