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

typeoftrue 또는 foo 변수가 정의되었는지 여부에 기초하여 평가 false. foo !== 'undefined' 다음 truetypeof'boolean'로 평가한다, true로 평가되면대해서 typeof

하지만은 말한다. true 또는 false으로 평가되는 이유는 무엇입니까? typeof 및 inquality 운영자 우선 순위 규칙은 그 표현 자세한 내용

(typeof foo) !== 'undefined' 

로서 해석되어 정의 때문에

답변

6

MDN page on operator precedence 참조. typeof은 우선 순위 16입니다. inquality는 우선 순위 10입니다. typeof의 우선 순위가 높으면 해당 피연산자에 더 긴밀하게 "바인딩"된다는 의미입니다.

그런데 왜 코드에 정의되지 않은 변수가 있습니까?

+1

참고로 'typeof (typeof foo! =='undefined ')'는 OP가 생각하는 것을 수행합니다. – ajm