3日目部分1-JavaScriptデフォルト-9)比較演算子

3507 ワード

9)比較演算子: https://ko.javascript.info/comparison
比較演算子は、数学で使用される演算子と同じであり、>、<、>=、<=、表示==、=、異なる!=、!==を有する.あります.
比較演算子の戻り値はBoolean型です.
2つの比較結果が真の場合、trueが返され、偽の場合falseが返されます.
この返されるBoolean値は、他の値と同様に変数に割り当てることができる.
let result = 5 > 4; // 비교 결과를 변수에 할당
alert( result ); // true

文字列の比較


JavaScript文字列を辞書順に比較します.これを「辞書編纂」ともいう.
文字列の1文字、1文字を比較するのは、辞書順ではなくUnicodeインデックス順で判断します.
alert( 'Z' > 'A' ); // true
alert( 'Glow' > 'Glee' ); // true
alert( 'Bee' > 'Be' ); // true
上記の例は、ZがAの後にあるため、大きな値である.
GlowとGleeは2番目のアルファベットLとLを比較します.前の2つのアルファベットが同じだからです.
同じ字なので、次の字oとeを比較します.
oは後で出てくる字なので、グローブはもっと大きな値だと思います.(比較に値が大きい場合は、後の文字は比較されません!)
文字間の比較が終わったら、長さがもっと長いのは大きな値だと思います.これが、上記の例で「Bee」>「Be」がtrueである理由です.
前述したのは、辞書順ではなくUnicodeインデックス順であり、文字列の章(https://ko.javascript.info/string)で参照されます.
簡単に言えば、Unicodeでは、小文字のインデックスが大文字のインデックスよりも大きい(大文字の後に現れる!)小文字の値は大文字より大きくなければなりません.

異なるタイプの値の比較


比較する値のデータ型が異なる場合、JavaScriptはこれらの値を数値に変換します.
alert( '2' > 1 ); // true, 문자열 '2'가 숫자 2로 변환된 후 비교가 진행됩니다.
alert( '01' == 1 ); // true, 문자열 '01'이 숫자 1로 변환된 후 비교가 진행됩니다.

alert( true == 1 ); // true, true는 숫자로 변환 하면 1이다.
alert( false == 0 ); // true, false는 숫자로 변환 하면 0이다.
次の例は特殊に見えるかもしれませんが、当然の結果です.
let a = 0;
alert( Boolean(a) ); // false, 숫자 0은 false니까.

let b = "0";
alert( Boolean(b) ); // true, 값이 있는 문자열은 true니까.

alert(a == b); // true!, 동등 연산자 ==는 다른 비교연산자들 처럼 비교 값이 서로 다른 형태일 경우
//숫자로 형 변환 후 비교하니까!

一致演算子


等しい演算子(equality operator)==0とfalseを区別できません.
空の文字列もそうです.
この等しい演算子は比較時に異なる形式の値を比較すると、これらの値を数値に変換して比較するからです.
alert( 0 == false ); // true, false를 숫자로 변환하면 0
alert( '' == false ); // true, ''를 숫자로 변환하면 0, false를 숫자로 변환하면 0
この変換を防ぐには、一致演算子(厳密に等しい演算子)===を使用します.
一致演算子は、厳密なピア演算子であり、比較値のデータ型でもあります.
alert( 0 === false ); // false, 피연산자의 형이 다르기 때문입니다.
不等演算子は!=で、一致しない演算子は!==はい.
ただし、上記のように一致演算子を使用すると、問題が発生する可能性があります...

nullとundefinedの比較で問題があります。

alert( null === undefined ); // false, 둘의 자료형은 다르다. 따라서 false

alert( null == undefined ); // true, 동등 연산자(=)는 이 둘을 단짝으로 생각한다!! 
//null 과 undefined 이 두 값을 동등 연산자로 비교할 땐 항상 true를 반환한다.

ではnullと0は?

alert( null > 0 );  // (1) false, 비교 연산자는 형태가 다른 값들은 숫자로 변환한다.
//null 을 숫자로 변환하면 0, 따라서 0 > 0 은 false

alert( null == 0 ); // (2) false, null을 동등 연산자로 비교했을 때 true를 반환하는 건
//같은 null이나 undefined뿐이다!

alert( null >= 0 ); // (3) true, null을 숫자로 변환하면 0이다. 따라서 true를 반환.

未定義とは?

alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
未定義の数値に変換するとNANが返されます.NaNは数字に合う限り無条件にfalseを返す.