[JavaScript] ==와 ===의 차이 | λŠμŠ¨ν•œ 비ꡐ와 μ—„κ²©ν•œ 비ꡐ

2025. 3. 13. 18:12Β· π™Ώπš›πš˜πšπš›πšŠπš–πš–πš’πš—πš π™»πšŠπš—πšπšžπšŠπšπšŽ/π™ΉπšŠπšŸπšŠπš‚πšŒπš›πš’πš™πš
λͺ©μ°¨
  1.  == (λŠμŠ¨ν•œ 비ꡐ / 동등 μ—°μ‚°μž)
  2. === (μ—„κ²©ν•œ 비ꡐ / 일치 μ—°μ‚°μž)
λ°˜μ‘ν˜•

 

이쀑 λ“±ν˜ΈλŠ”(==)λŠ” 두 λŒ€μƒμ„ 비ꡐ할 λ•Œ μœ ν˜• λ³€ν™˜μ„ μˆ˜ν–‰ν•œ λ’€ 비ꡐλ₯Ό μˆ˜ν–‰ν•œλ‹€.

 

 

 == (λŠμŠ¨ν•œ 비ꡐ / 동등 μ—°μ‚°μž)

console.log(0 == "0"); // true
console.log(5 == '5'); // true 

console.log(null == undefined); // true

 

==λŠ” νƒ€μž… λ³€ν™˜μ„ μžλ™μœΌλ‘œ μˆ˜ν–‰ν•œλ‹€.

κ·Έλž˜μ„œ 숫자 5와 문자 "5"λ₯Ό μžλ™μœΌλ‘œ νƒ€μž… λ³€ν™˜ν•˜μ—¬ 비ꡐλ₯Ό μˆ˜ν–‰ν•œλ‹€.

이 경우, 값이 κ°™κΈ° λ•Œλ¬Έμ— trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

nullκ³Ό unddefinedλŠ” 빈 값을 λ‚˜νƒ€λ‚΄λ―€λ‘œ κ°™λ‹€κ³  ν‰κ°€λœλ‹€.

 

 

 

 

=== (μ—„κ²©ν•œ 비ꡐ / 일치 μ—°μ‚°μž)

console.log(0 == "0"); // false
console.log(5 == '5'); // false

console.log(null == undefined); // false

 

 

κ°’λΏλ§Œ μ•„λ‹ˆλΌ νƒ€μž…μ΄ μ •ν™•νžˆ μΌμΉ˜ν•΄μ•Ό trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

5와 "5"λŠ” 값은 κ°™μ§€λ§Œ νƒ€μž…μ΄ λ‹€λ₯΄λ―€λ‘œ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

그리고, nullκ³Ό undefinedλŠ” νƒ€μž…μ΄ λ‹€λ₯΄λ―€λ‘œ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

 
 
null은 object νƒ€μž…, undefinedλŠ” undefined νƒ€μž…μ΄λ‹€.
 
 
 
 
 
 
 
 

 ===λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 μ•ˆμ „ν•˜κ³  예츑 κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 데 μ’‹λ‹€! 

 

 

==(λŠμŠ¨ν•œ 비ꡐ)κ°€ μœ„ν—˜ν•œ 이유

==λŠ” νƒ€μž… λ³€ν™˜(암묡적 ν˜•λ³€ν™˜, Coercion) 을 ν•˜λ©΄μ„œ λΉ„κ΅ν•˜κΈ° λ•Œλ¬Έμ—, μ˜ˆμƒμΉ˜ λͺ»ν•œ κ²°κ³Όκ°€ λ‚˜μ˜¬ 수 μžˆλ‹€.
즉, κ°œλ°œμžκ°€ μ˜λ„ν•˜μ§€ μ•Šμ€ 값이 true둜 평가될 μˆ˜λ„ 있고, λ²„κ·Έλ‘œ μ΄μ–΄μ§ˆ κ°€λŠ₯성이 λ†’λ‹€!

 

 

πŸ“Œ λͺ‡ κ°€μ§€ μœ„ν—˜ν•œ 사둀

λΆˆλ¦¬μ–Έ κ°’ λ³€ν™˜

console.log(false == 0); // true (false β†’ 0 λ³€ν™˜)
console.log("" == 0); // true ("" β†’ 0 λ³€ν™˜)

 

false와 빈 λ¬Έμžμ—΄ ""λŠ” μžλ™μœΌλ‘œ 0으둜 λ³€ν™˜λ˜μ–΄ 숫자 0κ°€ λΉ„κ΅λ˜κΈ° λ•Œλ¬Έμ— trueκ°€ λ°˜ν™˜λœλ‹€. 

 

 

곡백 λ¬Έμžμ™€ 숫자 비ꡐ

console.log(" \t\n" == 0); // true (곡백 λ¬Έμžλ“€λ„ 0으둜 λ³€ν™˜λ¨)

 

곡백 λ¬ΈμžλŠ” 빈 λ¬Έμžμ—΄κ³Ό λ™μΌν•˜κ²Œ μ·¨κΈ‰λ˜μ–΄ 숫자 0으둜 λ³€ν™˜λœλ‹€.

 

 

nullκ³Ό undefined 비ꡐ

console.log(null == undefined); // true (λ‘˜ λ‹€ λΉ„μ–΄μžˆλ‹€κ³  νŒλ‹¨)

 

 

 

 

 ===(μ—„κ²©ν•œ 비ꡐ)κ°€ μ•ˆμ „ν•œ 이유

console.log(false === 0); // false
console.log("" === 0); // false 
console.log(null === undefined); // false 
console.log(" \t\n" === 0); // false

 

===λŠ” νƒ€μž…κΉŒμ§€ κ²€μ‚¬ν•˜κΈ° λ•Œλ¬Έμ—, μ˜ˆμΈ‘ κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

ν˜•λ³€ν™˜μ΄ μΌμ–΄λ‚˜μ§€ μ•Šμ•„μ„œ, κ°œλ°œμžκ°€ μ˜λ„ν•œ λŒ€λ‘œ μ •ν™•ν•˜κ²Œ 비ꡐ할 수 μžˆλ‹€.

 


 

 

 

λ¬Όλ‘ , 빈 값을 κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄μ„œ ==κ°€ κΌ­ ν•„μš”ν•œ 상황도 μžˆμ§€λ§Œ(예: null == undefined 비ꡐ μ‹œ), 그게 μ•„λ‹ˆλΌλ©΄ 무쑰건 ===λ₯Ό μ“°λŠ” 게 더 μ•ˆμ „ν•˜κ³  쒋은 μŠ΅κ΄€μ΄λ‹€.

 

 

x y == === Object.is SameValueZero
undefined undefined βœ… true βœ… true βœ… true βœ… true
null null βœ… true βœ… true βœ… true βœ… true
true true βœ… true βœ… true βœ… true βœ… true
false false βœ… true βœ… true βœ… true βœ… true
'foo' 'foo' βœ… true βœ… true βœ… true βœ… true
0 0 βœ… true βœ… true βœ… true βœ… true
+0 -0 βœ… true βœ… true ❌ false βœ… true
+0 0 βœ… true βœ… true βœ… true βœ… true
-0 0 βœ… true βœ… true ❌ false βœ… true
0n -0n βœ… true βœ… true βœ… true βœ… true
0 false βœ… true ❌ false ❌ false ❌ false
"" false βœ… true ❌ false ❌ false ❌ false
"" 0 βœ… true ❌ false ❌ false ❌ false
'0' 0 βœ… true ❌ false ❌ false ❌ false
'17' 17 βœ… true ❌ false ❌ false ❌ false
[1, 2] '1,2' βœ… true ❌ false ❌ false ❌ false
new String('foo') 'foo' βœ… true ❌ false ❌ false ❌ false
null undefined βœ… true ❌ false ❌ false ❌ false
null false ❌ false ❌ false ❌ false ❌ false
undefined false ❌ false ❌ false ❌ false ❌ false
{ foo: 'bar' } { foo: 'bar' } ❌ false ❌ false ❌ false ❌ false
new String('foo') new String('foo') ❌ false ❌ false ❌ false ❌ false
0 null ❌ false ❌ false ❌ false ❌ false
0 NaN ❌ false ❌ false ❌ false ❌ false
'foo' NaN ❌ false ❌ false ❌ false ❌ false
NaN NaN ❌ false ❌ false βœ… true βœ… true

 

 

 

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Equality_comparisons_and_sameness

 

동등 비ꡐ 및 동일성 - JavaScript | MDN

JavaScriptλŠ” λ‹€μŒ μ„Έ κ°€μ§€μ˜ κ°’ 비ꡐ 연산을 μ œκ³΅ν•©λ‹ˆλ‹€.

developer.mozilla.org

 

 

λ°˜μ‘ν˜•

'π™Ώπš›πš˜πšπš›πšŠπš–πš–πš’πš—πš π™»πšŠπš—πšπšžπšŠπšπšŽ > π™ΉπšŠπšŸπšŠπš‚πšŒπš›πš’πš™πš' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JavaScript] λ°°μ—΄ 쀑볡 제거: include()와 Set μ„±λŠ₯ 비ꡐ  (0) 2025.03.17
[JavaScript] ES6 객체 λ¦¬ν„°λŸ΄ 단좕 ν‘œκΈ°λ²•(Object Property Shorthand)  (0) 2025.03.11
[JavaScript] 콜백(Callback)ν•¨μˆ˜λž€  (0) 2025.03.09
[Javascript] Array.prototype.every()λž€ every() ν•¨μˆ˜ μ‚¬μš©λ²•  (0) 2025.03.07
[JavaScript] 두 개의 λ°°μ—΄ ν•©μΉ˜λŠ” 방법  (0) 2025.03.05
  1.  == (λŠμŠ¨ν•œ 비ꡐ / 동등 μ—°μ‚°μž)
  2. === (μ—„κ²©ν•œ 비ꡐ / 일치 μ—°μ‚°μž)
'π™Ώπš›πš˜πšπš›πšŠπš–πš–πš’πš—πš π™»πšŠπš—πšπšžπšŠπšπšŽ/π™ΉπšŠπšŸπšŠπš‚πšŒπš›πš’πš™πš' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [JavaScript] λ°°μ—΄ 쀑볡 제거: include()와 Set μ„±λŠ₯ 비ꡐ
  • [JavaScript] ES6 객체 λ¦¬ν„°λŸ΄ 단좕 ν‘œκΈ°λ²•(Object Property Shorthand)
  • [JavaScript] 콜백(Callback)ν•¨μˆ˜λž€
  • [Javascript] Array.prototype.every()λž€ every() ν•¨μˆ˜ μ‚¬μš©λ²•
ν•΄λ²„λ‹ˆ
ν•΄λ²„λ‹ˆ
κ°œλ°œν•˜λ©΄μ„œ 배운 것듀을 κΈ°λ‘ν•©λ‹ˆλ‹€.
ν•΄λ²„λ‹ˆ
DevNight
ν•΄λ²„λ‹ˆ
전체
였늘
μ–΄μ œ
  • 전체보기 (195)
    • πšπšŽπšπš›πš˜πšœπš™πšŽπšŒπšπš’πšŸπšŽπšœ (5)
      • πšƒπš’πš™πšœ (2)
      • 회고 (3)
      • μ‹€μˆ˜ λͺ¨μŒμ§‘ (0)
    • π™Ώπš›πš˜πš“πšŽπšŒπš (3)
      • π™Ίπ™Ύπš‚πšƒπ™° πš†πšŽπš‹ π™Ώπš›πš˜πš“πšŽπšŒπš (2)
    • π™Ώπš›πš˜πšπš›πšŠπš–πš–πš’πš—πš π™»πšŠπš—πšπšžπšŠπšπšŽ (16)
      • π™·πšƒπ™Όπ™» (6)
      • π™²πš‚πš‚ (1)
      • π™Ήπ™°πš…π™° (1)
      • π™ΉπšŠπšŸπšŠπš‚πšŒπš›πš’πš™πš (7)
      • πšƒπš’πš™πšŽπš‚πšŒπš›πš’πš™πš (1)
    • π™±πšŠπšŒπš”πšŽπš—πš (1)
      • πš‚πš™πš›πš’πš—πš π™±πš˜πš˜πš (0)
      • Spring (2)
      • 파일 처리 (1)
      • π™Ήπš‚π™Ώ (1)
    • π™΅πš›πš˜πš—πšπšŽπš—πš (5)
      • 𝚁𝚎𝚊𝚌𝚝 (3)
      • πš…πšžπšŽ.πš“πšœ (2)
    • π™°πš•πšπš˜πš›πš’πšπš‘πš– (32)
      • π™Ώπš›πš˜πšπš›πšŠπš–πš–πšŽπš›πšœ (6)
      • π™±πšŠπšŽπš”πš“πš˜πš˜πš— (24)
    • π™³π™°πšƒπ™°π™±π™°πš‚π™΄ (16)
      • πš‚πš€π™» (1)
      • π™Ώπš˜πšœπšπšπš›πšŽπš‚πš€π™» (1)
      • π™Όπš’πš‚πš€π™» (3)
      • π™Ύπš›πšŠπšŒπš•πšŽ (0)
      • π™Ώπš›πš˜πšπš›πšŠπš–πš–πšŽπš›πšœ (1)
    • π™³πšŽπšŸπšŽπš•πš˜πš™πš–πšŽπš—πš πšƒπš˜πš˜πš•πšœ (4)
      • π™Έπš—πšπšŽπš•πš•πš’π™Ή (0)
      • π™΄πšŒπš•πš’πš™πšœπšŽ (1)
      • πš…πš‚π™²πš˜πšπšŽ (0)
      • π™±πšžπš’πš•πš πš‚πšŒπš›πš’πš™πšπšœ (1)
    • πš…πšŽπš›πšœπš’πš˜πš— π™²πš˜πš—πšπš›πš˜πš• (0)
      • π™Άπš’πš (0)
      • π™Άπš’πšπ™·πšžπš‹ (0)
      • πš‚πš…π™½ (0)
    • 배포 및 인프라 (2)
      • π™°πš†πš‚ (2)
    • π™Έπšƒ (15)
      • πš‚πš…π™½ (3)
    • π™ΉπšŠπšŸπšœπš‚πšŒπš›πš’πš™πš (4)
      • πš…πšžπšŽ.πš“πšœ (0)
    • πš†πšŽπš‹ (9)
      • 𝚊𝚠𝚜 (0)
      • π™·πšƒπ™Όπ™» (0)
      • π™²πš‚πš‚ (2)
    • π™ΉπšŠπšŸπšŠ (56)
      • πš‚πš™πš›πš’πš—πš π™±πš˜πš˜πš (3)
    • π™Άπš’πšπ™·πšžπš‹ (10)
    • ν™˜κ²½μ„€μ • (10)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

νƒœκ·Έ

  • JavaScript
  • html
  • PostgreSQL
  • web
  • λ°±μ€€
  • Java
  • React
  • μ½”λ”©ν…ŒμŠ€νŠΈ
  • λ°°μ—΄
  • spring
  • μžλ°”μ˜μ •μ„
  • μžλ°”
  • μ˜€λΈ”μ™„
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • μžλ°”μŠ€ν¬λ¦½νŠΈ
  • μ•Œκ³ λ¦¬μ¦˜
  • 이클립슀
  • ν‹°μŠ€ν† λ¦¬μ±Œλ¦°μ§€
  • database
  • php

졜근 λŒ“κΈ€

졜근 κΈ€

hELLO Β· Designed By μ •μƒμš°.v4.3.0
ν•΄λ²„λ‹ˆ
[JavaScript] ==와 ===의 차이 | λŠμŠ¨ν•œ 비ꡐ와 μ—„κ²©ν•œ 비ꡐ
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.