2017-10-06 8 views
44

나는 사소한 질문이 더 많습니다.undefined == undefined가 true입니다. 하지만 undefined> = undefined가 false입니까?

undefined == undefinedtrue 이겠지만 undefined >= undefinedfalse입니까?

undefinedundefined과 동일합니다.

그러나 같지 않거나 더 크지 않습니까?

+11

내 생각에'undefined's는 모두 자체와 같지 않은'NaN'으로 강제 변환됩니다. – Xufox

+1

'undefined === undefined || undefined> undefined' 및'undefined> = undefined' 인 경우, "보다 크거나 같음"의 OR이이 OR과 같지 않습니다. –

+0

@DeepakKamat'> ='장면에서 무슨 일이 발생합니까? 나는이 질문이 – theonlygusti

답변

2

암시 적으로 숫자로 변환 할 수없는 값을 비교하기 위해 부등식 연산자 (<, > 등)를 사용할 수 없습니다. 여기에는 undefined이 포함됩니다. 그 이유는 어쨌든 이런 식으로하려고하면 오류가 발생하는 다른 언어 (예 : TypeError, 비단뱀)와 달리 JS에서 수행 할 수 있습니다. 그러나 결과는 항상 거짓입니다.

+0

이것은' "foo"> = "bar"'가'true' 인 이유를 설명하지 않고 연산자가 피연산자를 일치 유형으로 강요하는 방법에 대한 설명을 포함하지 않습니다. – Xufox

+1

@Xufox 자바 스크립트는 느슨하게 입력 된 언어이기 때문에. 문자열에 숫자가 들어있는 문자열을 변환하여 비교할 수 있으며 문자열을 정수 및 부동 소수로 쉽게 변환하는 대신 엄격한 비교를 수행하는 "==="연산자도 있습니다. –

+8

실제로 불평등을 사용할 때 문자열은 [사전 식으로] 비교됩니다 (https://stackoverflow.com/a/7087831/7662085). – stybl

46

>= operator은 본질적으로 < operator의 부정입니다. 그리고 둘 다 Abstract Relational Comparison Algorithm을 호출하여 단계 3 (a ~ c)에서 정의한대로 undefined >= undefined에 대해 정의합니다. 사실 보다 큼 (- 또는 -)과 작음 (- 또는 -) 연산자는 숫자 또는 문자열로만 작업하기위한 것임을 알 수 있습니다. r사실 또는 정의되지 않은입니다

경우, 거짓을 반환 :

그런 다음 >= 운영자의 사양의 6 단계에서, 당신은 거짓을 반환 이유를 볼 수 있습니다. 그렇지 않으면 으로 반환하십시오.

8

undefined === undefined || undefined > undefinedundefined >= undefined 및 상기 OR "보다 크거나 같다"의 OR ||이 동일하지 않다.

>, <, >= 등의 비교 연산자는 숫자를 의미하고 undefined은 숫자가 아니기 때문에 undefined은 정의되지 않습니다.

10 >= "Hello World"을 반환하면 어떻게 되나요? 물론 거짓이지만 다시 10 >= "10"10 == "10"이 참이고 10 === "10"이 거짓이므로 true을 반환합니다. "10"은 숫자로 변환 될 수 있으므로 숫자가있는 문자열이 아닌 실제 숫자의 경우 반환되는 결과를 확인합니다.

!== 당신이 null, undefined, NaN을 비교하려고 할 때 일부 정말 이상하고 혼란스러운 일이 생긴다

입니다 != 반대로 >=에 대한 완전 항등 연산자 버전이 없습니다 -이 뭔가가 자바 스크립트의 사양은 수이다는 JavaScript는 매우 느슨하게 형식화 된 언어이고 유형은 매우 유연하여 10"10"을 비교할 수 있으며 다른 언어의 두 가지 정수를 비교했을 때만 얻을 수있는 결과를 얻을 수 있습니다.

질문과 토론은 직접 투표보다 더 환영합니다. 감사.