2012-03-23 4 views
2

자바 스크립트에서 undefined == variablevariable == undefined의 차이점은 무엇입니까? undefined === variable 또는 typeof variable == 'undefined' 일 경우 어떻게 달라질 수 있습니까? 당신이 언급 한 부품의 다른 순서에 관해서 JavaScript 평등 연산자

사람은 밖으로

+0

모두가 같은이 꽤 확신 해요. 변수가 정의되지 않았는지 확인하려면 "variable === undefined"를 사용하십시오. 변수에 데이터가 들어 있는지 확인하려면 "if (variable)"를 사용하십시오. 이것은 "if (variable! == undefined && variable! == null)"과 동일합니다. 항상 == 대신 ===를 사용해야합니다. ==를 사용하면 암시 적으로 형식 변환을 수행합니다. 1 == "1"= 참, 1 === "1"= 거짓. –

답변

1

정의되지 않은 변수를 테스트하려면 undefined을 사용하지 말고 대신 typeof 연산자를 사용하십시오!

undefined은 (는) 자바 스크립트로 작성되지 않은 키워드로, 단지 변수 이름입니다. 코드의 어느 곳에서나 var undefined = true을 전세계에 작성하면 모든 비교가 예상치 않게 작동합니다.

JSLINT 또는 JSHINT 같은 것을 사용하여 자바 스크립트 코드에서 이러한 유형의 오류가 발생하지 않도록해야합니다.

그 외에도 필자는 필자가 읽은 방법대로 비교 매개 변수를 먼저 작성합니다. If the variable foo is undefined thanif (typeof foo === "undefined")

나는이 패턴의 이름을 기억하지 않는 작성해야하는 이유입니다,하지만 난 하나 :

1

의미에 차이가 없습니다 나에게 도움이 될 수 있습니다.

=====이 아닙니다. 예를 들어 undefined == false이 참이지만 undefined === false은 그렇지 않습니다. 정의되지 않은 유형을 확인하는 것은이 경우 엄격한 비교와 유사합니다.

0

undefined == variablevariable == undefined은 동일합니다.

하지만 = (variable = undefined)을 놓친 경우 이상한 행동을 방지하기 위해 undefined == variable을 추천합니다.

undefined === variabletypeof variable == 'undefined'도 동일해야합니다.

+5

나는 귀하의 추천에 동의하지 않습니다. 순서는 괜찮지 만 어떤 경우에는 'undefined'의 원래 값을 오버라이드 할 수 있습니다 (새로운 ES5에서는이 변수를 읽기 전용으로 설정 함). – Tadeck

+1

예. 이 방법으로 코드를 작성하라는 권장 사항이 있지만 '정의되지 않음'은 js로 다시 작성할 수 있으므로이 경우에는 작동하지 않습니다. 그리고'undefined '를 덮어 쓰면 더 이상한 행동으로 이어질 것입니다. 나는'typeof' 옵션을 선호합니다. – kirilloid

+0

아, 그건 몰랐어. 감사 :) – Shylux