πΆ νμ λ³νμ΄λ?
μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ νΉμ νμ μ κ°μ§λλ€. μ΄ νμ μ λ³ννλ κ³Όμ μ νμ λ³νμ΄λΌ ν©λλ€. κ°λ°μκ° μ§μ νμ μ λ³κ²½νλ κ²½μ°λ₯Ό λͺ μμ νμ λ³ν(νμ μΊμ€ν )μ΄λΌ νλ©°, μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ½λ μ€ν μ€ μλμΌλ‘ λ³ννλ κ²½μ°λ₯Ό μ묡μ νμ λ³ν(νμ κ°μ λ³ν)μ΄λΌ ν©λλ€. μ€μν μ μ κΈ°μ‘΄ μμ κ°μ νμ μ΄ μ§μ λ³κ²½λλ κ²μ΄ μλλΌ, λ³νλ μλ‘μ΄ μμ κ°μ΄ μμ±λλ€λ κ²μ λλ€.
πΆ μ묡μ νμ λ³ν
μ묡μ νμ λ³νμ κ°λ°μμ μλμ μκ΄μμ΄ μ½λ λ¬Έλ§₯μ λ°λΌ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μλμΌλ‘ μνν©λλ€.
λ¬Έμμ΄ νμ μΌλ‘ λ³ν
``+`` μ°μ°μλ νΌμ°μ°μ μ€ νλλΌλ λ¬Έμμ΄μ΄λ©΄ λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμν©λλ€. μ΄ κ³Όμ μμ λ¬Έμμ΄μ΄ μλ κ°μ λ¬Έμμ΄λ‘ λ³νλ©λλ€.
10 + '5'; // '105'
true + 'is true'; // 'true is true'
λν, ν νλ¦Ώ 리ν°λ΄μμλ ννμ μ½μ μ λ¬Έμμ΄λ‘ λ³νλ©λλ€.
`1 + 1 = ${1 + 1}` // "1 + 1 = 2"
μ«μ νμ μΌλ‘ λ³ν
μ°μ μ°μ°, λΉκ΅ μ°μ° κ·Έλ¦¬κ³ + λ¨ν μ°μ°μλ₯Ό μ¬μ©ν λ, νΌμ°μ°μκ° μ«μκ° μλλ©΄ μ«μ νμ μΌλ‘ λ³νλ©λλ€.
// μ°μ μ°μ°
'10' - 5; // 5
true * 3; // 3 (true → 1)
false + 10; // 10 (false → 0)
// λΉκ΅ μ°μ°
'1' > 0 // true
// + λ¨ν μ°μ°μ
+'' // 0
+'1' // 1
+true // 1
+null // 0
+[] // 0
+{} // NaN
λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
λΆλ¦¬μΈ νμ μ΄ μλ κ°μ΄ 쑰건문μμ νκ°λ λ, Truthy(μ°ΈμΌλ‘ νκ°λλ κ°), Falsy(κ±°μ§μΌλ‘ νκ°λλ κ°)λ‘ λ³νλ©λλ€. μ΄λ ``false``λ‘ νκ°λλ Falsy κ°μ ``false``, ``0``, ``-0``, ``''``(λΉ λ¬Έμμ΄), ``null``, ``undefined``, ``NaN`` μ λλ€. κ·Έ μΈ λͺ¨λ κ²½μ°λ Truthy κ°μ λλ€.
if (0) console.log('μ€νλμ§ μμ');
if ('Hello') console.log('μ€νλ¨'); // truthy κ°μ΄λ―λ‘ μ€νλ¨
πΆ λͺ μμ νμ λ³ν
κ°λ°μκ° μ§μ νμ λ³νμ μννλ κ²μΌλ‘, νμ€ λΉνΈμΈ μμ±μ ν¨μλ₯Ό ``new`` μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²κ³Ό λΉνΈμΈ λ©μλλ₯Ό μ¬μ©νλ λ°©λ² κ·Έλ¦¬κ³ μ묡μ νμ λ³νμ μλμ μΌλ‘ μ¬μ©νλ λ°©λ²μ΄ μμ΅λλ€.
λ¬Έμμ΄ νμ μΌλ‘ λ³ν
- ``String`` μμ±μ ν¨μλ₯Ό ``new`` μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- ``Object.prototype.toString`` λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
- λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ¬μ©νλ λ°©λ²
String(123); // '123'
(123).toString(); // '123'
123 + ''; // '123' (μ묡μ λ³ν νμ©)
μ«μ νμ μΌλ‘ λ³ν
- ``Number`` μμ±μ ν¨μλ₯Ό ``new`` μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- ``parseInt``, ``parseFloat`` ν¨μλ₯Ό μ¬μ©νλ λ°©λ² (λ¬Έμμ΄λ§ μ«μ νμ μΌλ‘ λ³ν κ°λ₯)
- ``+`` λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
- ``*`` μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
Number('123'); // 123
parseInt('123px'); // 123
+'123'; // 123 (+ λ¨ν μ°μ°μ νμ©)
λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
- ``Boolean`` μμ±μ ν¨μλ₯Ό ``new`` μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- ``!`` λΆμ λ Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
Boolean(1); // true
!!'Hello'; // true (λ
Όλ¦¬ λΆμ μ°μ°μ νμ©)
πΆ λ¨μΆ νκ°
λ¨μΆ νκ°λ ννμμ νκ°νλ λμ€μ νκ° κ²°κ³Όκ° νμ λ κ²½μ° λλ¨Έμ§ νκ° κ³Όμ μ μλ΅νλ κ²μ λ»ν©λλ€.
λ Όλ¦¬κ³±(``&&``) μ°μ°μ
``&&`` μ°μ°μλ 첫 λ²μ§Έ νΌμ°μ°μκ° Falsy νλ©΄ λ°λ‘ λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ λ λ²μ§Έ νΌμ°μ°μλ₯Ό λ°νν©λλ€.
false && 'Hello'; // false
'Hello' && 'World'; // 'World'
λ Όλ¦¬ν©(``||``) μ°μ°μ
``||`` μ°μ°μλ 첫 λ²μ§Έ νΌμ°μ°μκ° Truthy νλ©΄ λ°λ‘ λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ λ λ²μ§Έ νΌμ°μ°μλ₯Ό λ°νν©λλ€.
'' || 'λ체κ°'; // 'λ체κ°'
0 || 100; // 100
μ΄λ₯Ό νμ©νλ©΄ κΈ°λ³Έκ° μ€μ μ΄ κ°λ₯ν©λλ€.
const name = '';
const defaultName = name || 'Guest';
console.log(defaultName); // 'Guest'
μ΅μ λ 체μ΄λ μ°μ°μ (``?.``)
μ’νμ νΌμ°μ°μκ° ``null`` λλ ``undefined`` μΈ κ²½μ° ``undefined``λ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄κ°λ μ°μ°μμ λλ€.
null λ³ν© μ°μ°μ (``??``)
μ’νμ νΌμ°μ°μκ° ``null`` λλ ``undefined`` μΈ κ²½μ° μ°νμ νΌμ°μ°μλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°ννλ μ°μ°μμ λλ€.
'π Jero's Review > λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
11μ₯. μμ κ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2025.02.14 |
---|---|
10μ₯. κ°μ²΄ 리ν°λ΄ (1) | 2025.02.13 |
08μ₯. μ μ΄λ¬Έ (0) | 2025.02.12 |
07μ₯. μ°μ°μ (0) | 2025.02.12 |
06μ₯. λ°μ΄ν° νμ (2) | 2025.02.12 |