2016-09-15 4 views
0

내가 관계없이 데이터 유형 B와 동일한 값을 가지면Javascript/jQuery : 데이터 유형에 관계없이 두 값이 같은지 확인하십시오. 내가

if (A == B) { 
    //body of if statement 
} 

하지만 == 존재하는 경우 검증에서 서버 검사 거부 같이 확인할 필요는 IF 조건을 가지고있다. 그걸 ===으로 바꿀 것을 요청할 것입니다 (하지만 이것을 변경할 수는 없습니다).

나는 기본적으로 A & B의 가능한 값 및 유형은

String, Number, null, '', undefined, NaN 

간단 같은데하지만 단지 논리 오류 할 수있는 곳 ... :)

+0

나는 당신이 {...}' – Aziz

+1

@Aziz 경우 (=== B.toString() A.toString())'에 해킹 수 있다고 생각 ** 어떤 경우에는 오류가 발생합니다 ** –

+1

* ""그러나 "=="변경을 묻는 메시지가 나타나면 내 서버 검사에서 거부됩니다. "(변경할 수 없음)"글쎄, 그것을 바꿀 수있는 사람을 누구든지 얻을 수 있습니다. 때때로 당신은'=='를 원한다. –

답변

4

을 달성 할 수있는 방법이 있습니다 ==에 대한 유스 케이스가 유효하므로 누구나 을 찾아서으로 변경하고 그렇게하는 것이 좋습니다. 그의 누락됩니다에서

, 당신은 자신에게 abstract equality comparison algorithm라고 ==가 무엇을 수행하는 함수를 작성하고 대신 ==의 기능을 사용할 수 있습니다 :

비교의 X == y를, 여기서 x와 y는 값이며 true 또는 false를 생성합니다. 다음과 같은 비교가 수행된다 : (X) 그리고,

  1. 복귀 Strict Equality Comparison X === Y 논리합 Type (Y)와 동일

    1. Type 경우.
  2. x가 null이고 y가 정의되지 않은 경우 true를 반환합니다.
  3. x가 정의되지 않고 y가 null 인 경우 true를 반환합니다.
  4. Type (x)이 숫자이고 Type (y)이 문자열 인 경우 비교 결과 x == ToNumber (y)을 반환합니다.
  5. Type (x)이 문자열이고 Type (y)이 숫자 인 경우 ToNumber (x) == y를 비교 결과로 반환하십시오.
  6. Type (x)이 부울 인 경우 비교 결과 ToNumber (x) == y을 반환합니다.
  7. Type (y)이 부울이면 비교 결과 x == ToNumber (y)을 반환합니다.
  8. Type (x)이 문자열, 숫자 또는 기호이고 Type (y)이 Object 인 경우 비교 결과 x == ToPrimitive (y)을 반환합니다.
  9. Type (x)이 Object이고 Type (y)이 문자열, 숫자 또는 기호이면 ToPrimitive (x) == y의 결과를 반환합니다.
  10. false를 반환합니다.

위에서 사용 된 모든 추상 동작의 정확한 구현은 사양에서 명확하게 정의됩니다.나는 그것을 발견

+0

plus1 그러나 해결 방법이 필요합니다 – Antguider

+0

문제는 ** 해결 방법이 필요하다고 생각합니다! @JqueryRock – eisbehr

+1

@JqueryRock : 두 번째 단락이 해결 방법을 시작합니다. –

-2

, (해결)

A = A ? A.toString() : A; 
B = B ? B.toString() : B; 
if(A === B){ 
    //Rock it 
} 
+1

글쎄' "0"== 0'은'true'이지만 '해결 방법'은'false'를 반환합니다 ... 대답으로 게시하기 전에 테스트해야합니다 –

+0

@ A.Wolff : 동의 함 – Antguider

관련 문제