2010-01-25 4 views
17

Which equals operator (== vs ===) should be used in JavaScript comparisons?은 '==='을 제외하고 기본적으로 동일하다는 것을 나타내므로 유형 평등을 보장하므로 '=='이 유형 변환을 수행 할 수 있습니다. Douglas Crockford의 JavaScript : 좋은 부품 인은 항상 '=='을 사용하지 않는 것이 좋습니다. 그러나 두 가지 평등 연산자 집합을 설계하는 원래 생각이 무엇인지 궁금합니다.언제 JavaScript === ===보다 의미가 있습니까?

실제로 '=='을 사용하는 것이 '==='을 사용하는 것보다 더 적합한 상황을 보았습니까?

답변

17

을 확인할 수 있습니다 우리가

$var = 0; 

if($var == false){ 
    // true because 0 is also read as false 
} 

if(!$var){ 
    // true because 0 is also read as false 
} 

if($var === false){ 
    // false because 0 is not the same datatype as false. (int vs bool) 
} 

if($var !== false){ 
    // true becuase 0 is not the same datatype as false. (int vs bool) 
} 

if($var === 0){ 
    // true, the value and datatype are the same. 
} 

을 말해봐 nd

if (4 === "4") 
{ 
    // false 
} 

이것은 개체 및 배열에 적용됩니다.

그래서 위의 경우에, 당신은의 사용 여부를 합리적인 선택을해야 == 또는 ===

+0

나는 둘 사이의 차이점을 묻지 않는다. 이것은 359494에서 답을 얻을 수있다.'=='이 언제 적합한 지 알고 싶다. – bryantsai

+5

@bryantsai : 그는'parseInt'를 수동으로 사용하지 않고 문자열을 숫자와 비교하는 것으로 당신에게 준 것입니다. – Anonymous

+0

mm .. 정말 고마워하지 않았다. 고마워. – bryantsai

0

==는 두 변의 값이 같은지 아닌지 비교합니다.

=== 두 변의 값과 데이터 유형이 같은지 아닌지 비교합니다.

if (4 === 4) 
{ 
    // true 
} 

하지만

if (4 == "4") 
{ 
    // true 
} 

A :

는 숫자 나 문자열을 비교할 때 고려해야 상황을 http://www.jonlee.ca/the-triple-equals-in-php/

+3

-1 PHP는 아니고 JavaScript에 관한 것입니다. – Gumbo

3

내가 ==를 사용에 문제가 없다는 것을 제안하지만, 왜 그것을 사용하는 경우에 이해하기 (즉, 일반적으로 ===을 사용하고, 용도로 사용하는 경우 ==을 사용합니다. 기본적으로 == 그냥 당신에게 속기 표기법을 제공합니다 - (! vble) 대신 그냥

if (vble == false) ... 

(또는 더 쉽게 작성하기) 작성 훨씬 쉽게

if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ... 

같은 일을의 경우 ...

물론 "진실"또는 "거짓"값을 찾는 것 이상의 사례가 있습니다. 또 다른 예는이 속기에 사용하고

정말, 당신은 ... 나는 그것을 더 잘 맞는 곳 ==를 사용하지 않는 어떤 이유가 표시되지, 왜 =====를 사용할 때 이해할 필요 속기 방법은 통화가 가능 :

function func(boolOptionNotCommonlyUsed) { 
    if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true 
    //do something we rarely do 
    } 
    //do whatever func usually does 
} 

func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without "false" as an arg 
5

간단한 대답은 '=='보다 더 의미가 있다는 것입니다 '==='때 비교시 발생하는 강제 형 변환을 원하는 .

좋은 예로 URL 쿼리 문자열에 숫자가 전달됩니다. 예를 들어 페이지 지정된 콘텐츠가 있고 page 쿼리 매개 변수가 현재 페이지 번호를 보유하고있는 경우 page이 실제로 "1"이고 1이 아니더라도 if (page == 1) ...으로 현재 페이지를 확인할 수 있습니다.