자바스크립트 - == 및 ===
17264 단어 javascriptprogrammingbfe
1. ==
Equality(==) - MDN
항등 연산자의 캄파리손은 대략 다음과 같이 요약할 수 있습니다.
let a = { food: "pork", fruit: "watermelon" };
let b = a;
console.log(a == b); //true
let c = { ...a }; //or other object-copy operations
console.log(a == c); //false
null
이고 다른 피연산자가 undefined
이면 true
를 반환합니다.console.log(undefined == null); //true
console.log(null == undefined); //true
피연산자의 유형이 동일한 경우 다음과 같이 비교됩니다.
true
를 반환합니다.console.log("abcd" == "abcd"); //true
console.log("abcd" == "abcde"); //false
true
를 반환합니다. +0
와 -0
는 같은 값으로 취급됩니다. 피연산자 중 하나가 NaN
이면 false
를 반환합니다.console.log(1 == 1); //true
console.log(1 == 2); //false
console.log(+0 == -0); //true
console.log(NaN == NaN); //false
true
또는 둘 다 true
인 경우에만 false
를 반환합니다. 피연산자의 유형이 다른 경우 비교하기 전에 피연산자를 동일한 유형으로 변환해 보십시오.
console.log(1 == "1"); //true
true
이면 1로, false
이면 0으로 변환합니다.console.log(true == 1); //true
console.log(false == 0); //true
console.log(0 == !!null); // true. !null is true, !true is false, false is 0
console.log(0 == !!undefined); // true. !undefined is true, !true is false, false is 0
valueOf()
및 toString()
메서드를 사용하여 객체를 프리미티브로 변환해 보십시오. Object.prototype.valueOf()
: 지정된 객체(문자열, 숫자, bigint, 부울, 기호 유형의 객체)의 기본 값을 반환합니다. 객체에 기본 값(객체 유형의 객체)이 없으면 객체 자체를 반환합니다. // objects of type string, number, bigint, boolean, symbol
let a = 1;
console.log(a.valueOf()); // 1
// objects of type object
let b = { name: "Kitty" };
console.log(b.valueOf()); // { name: 'Kitty' }
Object.prototype.toString()
: 객체(문자열, 숫자, bigint, 부울, 기호 유형의 객체)를 나타내는 문자열을 반환합니다. 객체에 기본 값(객체 유형의 객체)이 없으면 [object Type]
를 반환합니다. // objects of type string, number, bigint, boolean, symbol
let a = 1;
console.log(a.toString()); // "1"
// objects of type object
let b = { name: "Kitty" };
console.log(b.toString()); // [object Object]
Array.prototype.toString()
: 배열 객체가 객체의 메서드 toString()을 재정의합니다. 배열의 요소를 나타내는 문자열을 반환합니다. let arr = ["kitty"];
console.log(arr.toString()); // 'kitty'
// object == string
let obj = { name: "kitty" };
console.log(obj == "kitty"); //false. obj.valueOf(): { name: "kitty" }, obj.toString(): [object Object]
// array == string
let arr = ["kitty"];
console.log(arr == "kitty"); //true. arr.valueOf(): ['kitty'], arr.toString(): 'kitty'
2. ===
Strict equality(===) - MDN
같음 연산자와 달리 완전 같음 연산자는 항상 서로 다른 형식의 피연산자를 서로 다른 것으로 간주합니다.
false
를 반환합니다.consol.log("3" === 3); //false
console.log(true === 1); //false
console.log(null === undefined); //false
true
를 반환합니다.let obj1 = { name: "kitty", age: 1 };
let obj2 = obj1;
console.log(obj1 === obj2);
let obj3 = { name: "kitty", age: 1 };
console.log(obj1 === obj3);
let obj4 = { ...obj1 };
console.log(obj1 === obj4);
null
이거나 두 피연산자가 모두 undefined
이면 true
를 반환합니다.console.log(null === null); // true
console.log(undefined === undefined); // true
NaN
이면 false
를 반환합니다.console.log(NaN === NaN); // false
그렇지 않으면 두 피연산자의 값을 비교합니다.
+0
와 -0
는 같은 값으로 간주됩니다.console.log(+0 === -0); //true
console.log(1 === 1); //true
console.log(0 === 1); //false
console.log("kitty" === "kitty"); //true
console.log("kitty" === "kity"); //false
true
이거나 둘 다false
여야 합니다. ==
와 ===
의 가장 눈에 띄는 차이점은 피연산자의 유형이 다른 경우 ==
연산자는 비교하기 전에 피연산자를 동일한 유형으로 변환하려고 시도한다는 것입니다.
Reference
이 문제에 관하여(자바스크립트 - == 및 ===), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lachellezhang/javascript-and--1l4c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)