if(xx)와 비교 연산자 a==b의ture/false의 판단
if ([0]) {
console.log([0] == true);//false
console.log(!![0]);//true
}
if ("potato") {
console.log("potato" == false);//false
console.log("potato" == true);//false
}
위의 두 단락의 코드에서 알 수 있듯이
if( )
와a == b
는ture/false에 대한 판단이 다르다.다음은 우리가 범례를 통해 깊이 이해하고자 한다.if(조건 판단)
Undefined,null
if(undefined){console.log("true")}; //
if(null){console.log("true")};//
Boolean
if(true){console.log("true")};// true
if(false){console.log("true")};//
Number
if(0){console.log("true")};//
if(NaN){console.log("true")};//
if(0.0){console.log("true")};//
if(1){console.log("true")};// true
if(-1){console.log("true")};// true
String
if(""){console.log("true")};//
if(" "){console.log("true")};// true
if("0"){console.log("true")};// true
if("false"){console.log("true")};// true
Object
if({}){console.log("true")};// true
위의 예에서 규칙을 요약하면 다음과 같습니다.
타입
결실
Undefined
false
Null
false
Boolean
직접 판단
Number
0, 또는 NAN은 false, 기타는true
String
빈 문자열은false이고 기타는true
Object
true
비교 기호 표현식
null == undefined
console.log(null == undefined);// true
console.log(undefined == null);// true
Number == String
console.log(6 == "6");// true
console.log(6.1 == "6.1");// true
console.log(6 == "six");// false
Boolean == Number/String
console.log(true == 1);// true
console.log(false == 0);// true
console.log(true == "1");// true
console.log(false == "0");// true
Object == Number/String
fn = new String("2");
fn == 2; // true
fn == "2"; // true
fn == 1; // false
규칙 요약:
==
양쪽의 서로 다른 유형의 값을 먼저 전환한다. 전환 규칙은 다음과 같다. 변환 결과
Boolean
수치로 변환,ture==>1,false==>0
String
숫자 "123"==> 2, "abc"===> NaN으로 변환
Object
원래 유형으로 변환(PrimitiveValue), 즉 먼저 호출
.valueOf
, 정의가 없으면 호출 시도.toString
.우리 다시 돌아와서 처음의 예를 설명하자
if ([0]) {
console.log([0] == true);//false
console.log(!![0]);//true
}
//수조
[0]
를 대상으로 하기 때문에if문장에서true로 판정한다.[0] == true
에 대해 먼저 [0].valueOf (), 수조의 valueOf () 방법이 자신에게 되돌아오기 때문에 결과는 원시 형식이 아닙니다. 계속 호출 [0].toString().배열의 경우 toString () 방법의 알고리즘은 모든 요소를 문자열 형식으로 변환한 다음 쉼표로 연결한다. 따라서 최종 결과는 문자열"0"
이고 이것은 원시 형식의 값이다.이 때 표현식은 '0' = = true 두 동작 수가 문자열 형식, 부울 형식으로 바뀌었습니다.앞에서 정리한 규칙에 따라'0'은 수치 0으로,true는 수치 1로 전환한다.표현식은 0==1이(가) 되고 결과는 false가 됩니다.if ("potato") {
console.log("potato" == false);//false
console.log("potato" == true);//false
}
//
potato
if문장에서 문자열이므로true로 판정됩니다.다시 보면 표현식"potato" == false"
, 선유형 변환"potato"
문자열 유형은 NaN
,false는 0으로 변환되어 결과는false이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.