
μμ μμμ νμ λ³νμ λν μΈκΈμ΄ λ§μ΄ μμλ€.
μ΄λ² κΈμμλ νμ λ³ν, κ·Έλ¦¬κ³ λ¨μΆ νκ°λ 무μμΈ μ§μ λν΄ μ λ¦¬ν΄ λ³΄μλ€.
κ°μ μ¬μ©νλ€ λ³΄λ©΄, νμ μ λ³νν΄μΌ νλ κ²½μ°κ° μλ€.
λ¬Έμμ΄κ³Ό μ«μμ λ§μ μ΄ μ΄λ£¨μ΄μ ΈμΌ νκ±°λ, boolean νμ μ΄ μλ κ°μ λ Όλ¦¬ κ°μΌλ‘ νκ°ν΄μΌ νλ κ²½μ°κ° μ΄μ ν΄λΉνλ€.
νμ λ³νμ΄λΌλ κ²μ΄, κΈ°μ‘΄ κ°μ μ€μ λ‘ λ³κ²½νλ κ²μ μλ―Ένμ§λ μμμ κΈ°μ΅νμ.
κ·Έμ λ€λ₯Έ νμ
μ μλ‘μ΄ κ°μ μμ±ν λΏμ΄λ€.
λͺ μμ νμ λ³ν explicit coercion μ, κ°λ°μκ° μλμ μΌλ‘ κ°μ νμ μ λ³ννλ κ²μ λ§νλ€.
μ묡μ νμ λ³ν implicit coercion μ, κ°λ°μμ μλμλ μκ΄ μμ΄ μνλλ νμ λ³νμ λ§νλ€.
μ΄λ° μ묡μ νμ λ³ν κ³Όμ μ, μ½λμμ νμΈν μκ° μλ€.
λλ£κ° μ½λλ₯Ό λ³΄κ³ νμ
λ³νμ μμΈ‘ν μ μλλ‘, νμ
λ³νμ μ νν μ΄ν΄ν νμ μ¬μ©νλ κ²μ΄ μ€μνλ€.
μ΄μ λ°©λ²μ λν΄ μμΈν μ΄ν΄λ³΄μ!
μ΄λ€ κ°μ String νμ μΌλ‘ λ³νμν€λ λ°©λ²μ λν΄ μμ보μ
String( κ° );
String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
( κ° ).toString();
Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
κ° + '';
λ¬Έμμ΄ μ°κ²° μ°μ°μ + λ₯Ό μ¬μ©νλ λ°©λ²

μ΄λ€ κ°μ Number νμ μΌλ‘ λ³νμν€λ λ°©λ²μ λν΄ μμ보μ
Number( κ° );
Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
parseInt( λ¬Έμμ΄ ); or parseFloat( λ¬Έμμ΄ );
parseInt, parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ² (λ¬Έμμ΄λ§ λ³νμ΄ κ°λ₯νλ€.)
+ κ°;
λ¨ν μ°μ μ°μ°μ + λ₯Ό μ¬μ©νλ λ°©λ²
κ° * 1;
μ°μ μ°μ°μ * λ₯Ό μ¬μ©νλ λ°©λ²

'', λΉ λ°°μ΄ [], null, falseλ 0μΌλ‘ λ³νλ¨μ΄λ€ κ°μ boolean νμ μΌλ‘ λ³νμν€λ λ°©λ²μ λν΄ μμ보μ
Boolean( κ° );
Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
!!κ°;
λΆμ λ
Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
JavaScript μμ§μ, boolean νμ
μ΄ μλ κ°μ Truthy κ°κ³Ό Falsy κ°μΌλ‘ ꡬλΆνλ©°,
Truthyλ true, Falsyλ falseλ‘ μ묡μ νμ
λ³νλλ€.
false, undefined, null, 0, -0, NaN, ''λ Falsy κ°.JavaScript μμ§μ, ( κ° ) + ''; λ°©λ²μ μ¬μ©ν΄ κ°μ String νμ
μΌλ‘ λ³ννλ€.
JavaScript μμ§μ, + κ°; λ°©λ²μ μ¬μ©ν΄ κ°μ Number νμ
μΌλ‘ λ³ννλ€.
λ¨μΆ νκ°λ, ννμ νκ° λμ€ κ²°κ³Όκ° νμ μ΄ λ κ²½μ°, λλ¨Έμ§ νκ° κ³Όμ μ μλ΅νλ νκ° λ°©μμ λ§νλ κ²μ΄λ€.
λ Όλ¦¬ μ°μ°μ νΌμ°μ°μ μ€, κ²°κ³Όλ₯Ό κ²°μ νλ νΌμ°μ°μκ° μκΈ°κ² λλ€.
μ΄λ₯Ό νμ
λ³ν νμ§ μμ νΌμ°μ°μ κ·Έλλ‘λ₯Ό λ°ννλ€λ νΉμ§μ΄ μλ€.
'Cat' && 'Dog' λΌλ ννμμ΄ μλ€.
'Cat'λ Truthy κ°μ΄κ³ , trueλ‘ νκ°λλ€.
λ°λΌμ ν΄λΉ ννμμ 'Dog'μ μν΄ κ²°κ³Όκ° κ²°μ λ κ²μ΄λ€.
μ΄λ, trueλ₯Ό λ°ννλ κ²μ΄ μλ 'Dog'λ₯Ό λ°ννλ κ²μ΄ λ°λ‘ λ¨μΆ νκ°μ΄λ€.
ES11μμ λμ λμλ€.
μ’νμ νΌμ°μ°μκ° null/undefinedμ΄λ©΄ undefinedλ₯Ό λ°ννκ³ ,
κ·Έλ μ§ μλ€λ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄ λκ°κ² νλ μ°μ°μμ΄λ€.
let elem = null;
let value = elem?.value;
console.log(value);
// undefined
ES11μμ λμ λμλ€.
μ’νμ νΌμ°μ°μκ° null/undefinedμ΄λ©΄ μ°νμ νΌμ°μ°μλ₯Ό,
μλλΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°ννλ μ°μ°μμ΄λ€.
λ³μμ κΈ°λ³Έκ° μ€μ μ μ μ©νλ€.
let foo = null ??? 'default string';
console.log(foo)
// "default string"
λ΄κ° κΈ°λν κ² λμ§ λͺ¨λ₯΄κ² μ§λ§, κΈ°λνλ λ΄μ©κ³Όλ λ€λ₯΄κ²,,, κ·Έλ₯ κ°λ¨ν λ°©λ²λ§ μμ°½ λ€λ£¨λ κ² κ°μ μ‘°κΈ μμ¬μ λ€.
λ€μ μ₯μ κ°μ²΄ 리ν°λ΄μ΄λ€.
κ°μ²΄κ° JavaScriptμμ κ΅μ₯ν μ€μν κ°λ μ΄λΌκ³ νλλ°, μ μ΄ν΄νκ³ μ 리ν΄λ³΄κ³ μΆλ€!