IT이야기

Javascript == 와 === 차이점

cyworld 2021. 2. 16. 11:45
반응형

javascript에서 비교 구문을 대부분 "=="을 사용하고 있습니다만, 간혹 "==="까지 사용하는 경우도 보셨을것입니다. 절대 오타는 아니고 "==="도 나름 중요한 역할을 하고 있는 비교 등호입니다.

 

"=="와 "==="의 가장 큰 차이점은 "==="는 타입(데이터형식)까지 비교를 한다고 보면 됩니다.

 

간단한 예를 들자면 1 == "1"은 true를 리턴하지만 1 === "1"은 서로 타입이 다르므로 false를 리턴합니다.

 

더 자세한 예들은 아래 예시들을 확인해 보시죠.

<html>
<head>
<title>테스트</title>
<script>
$(document).ready(function() {
	console.log("undefined == undefined : " + (undefined == undefined));
	console.log("undefined === undefined : " + (undefined === undefined));
	console.log("null == null : " + (null == null));
	console.log("null === null : " + (null === null));
	console.log("true == true : " + (true == true));
	console.log("true === true : " + (true === true));
	console.log("false == false : " + (false == false));
	console.log("false === false : " + (false === false));
	console.log("'abc' == 'abc' : " + ('abc' == 'abc'));
	console.log("'abc' === 'abc' : " + ('abc' === 'abc'));
	console.log("0 == 0 : " + (0 == 0));
	console.log("0 === 0 : " + (0 === 0));
	console.log("+0 == -0 : " + (+0 == -0));
	console.log("+0 === -0 : " + (+0 === -0));
	console.log("+0 == 0 : " + (+0 == 0));
	console.log("+0 === 0 : " + (+0 === 0));
	console.log("-0 == 0 : " + (-0 == 0));
	console.log("-0 === 0 : " + (-0 === 0));
	console.log("0 == false : " + (0 == false));
	console.log("0 === false : " + (0 === false));
	console.log("'' == false : " + ('' == false));
	console.log("'' === false : " + ('' === false));
	console.log("'' == 0 : " + ('' == 0));
	console.log("'' === 0 : " + ('' === 0));
	console.log("'0' == 0 : " + ('0' == 0));
	console.log("'0' === 0 : " + ('0' === 0));
	console.log("'17' == 17 : " + ('17' == 17));
	console.log("'17' === 17 : " + ('17' === 17));
	console.log("[1, 2] == '1,2' : " + ([1, 2] == '1,2'));
	console.log("[1, 2] === '1,2' : " + ([1, 2] === '1,2'));
	console.log("new String('abc') == 'abc' : " + (new String('abc') == 'abc'));
	console.log("new String('abc') === 'abc' : " + (new String('abc') === 'abc'));
	console.log("null == undefined : " + (null == undefined));
	console.log("null === undefined : " + (null === undefined));
});
</script>
</head>
<body>
</body>
</html>

결과값은 아래와 같습니다.

undefined == undefined : true
undefined === undefined : true
null == null : true
null === null : true
true == true : true
true === true : true
false == false : true
false === false : true
'abc' == 'abc' : true
'abc' === 'abc' : true
0 == 0 : true
0 === 0 : true
+0 == -0 : true
+0 === -0 : true
+0 == 0 : true
+0 === 0 : true
-0 == 0 : true
-0 === 0 : true
0 == false : true
0 === false : false
'' == false : true
'' === false : false
'' == 0 : true
'' === 0 : false
'0' == 0 : true
'0' === 0 : false
'17' == 17 : true
'17' === 17 : false
[1, 2] == '1,2' : true
[1, 2] === '1,2' : false
new String('abc') == 'abc' : true
new String('abc') === 'abc' : false
null == undefined : true
null === undefined : false

 

javascript에서는 == 사용시 공백('')을 0을 동일하게 판단해주므로 때에 따라서 ===를 사용하여 정확한 비교를 필요할 수도 있습니다.

 

==이 편한 것 중에 하나는 배열인 [1, 2]와  String인 '1,2' 값을 동일하게 봐준다라는 것입니다.

반응형