κ°μ νμ μ κ°λ°μμ μλμ λ°λΌ λ€λ₯Έ νμ μΌλ‘ λ³νν μ μκ³ , μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ μλ λ³νλκΈ°λ νλ€.
λͺ μμ νμ λ³ν
: κ°λ°μκ° μλμ μΌλ‘ κ°μ νμ μ λ³ννλ κ²
μ묡μ νμ λ³ν
: μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ λ³ννλ κ²
// λͺ
μμ νμ
λ³ν μμ
var x =10;
var str = x.toString();
console.log(typeof str, str) // string 10
// μ묡μ νμ
λ³ν μμ
var x =10;
var str = x + '';
console.log(typeof str, str) // string 10
π‘ νμ λ³νμ μ΄ν΄ν΄μΌ νλ μ΄μ
π‘ μμ μ΄ μμ±ν μ½λμμ μ묡μ νμ λ³νμ΄ λ°μνλ μ§, λ°μνλ€λ©΄ μ΄λ€ νμ μ΄ μ΄λ€ κ°μΌλ‘ λ³νλλ μ§, κ·Έλ¦¬κ³ νμ λ³νλ κ°μΌλ‘ ννμμ΄ μ΄λ»κ² νκ°λ κ²μΈμ§ μμΈ‘ κ°λ₯ν΄μΌ νλ€.
λ§μ½ νμ κ²°κ³Όλ₯Ό μμΈ‘νμ§ λͺ»νκ±°λ μμΈ‘ κ²°κ³Όμ μΌμΉνμ§ μλλ€λ©΄ μ€λ₯λ₯Ό μμ°ν κ°λ₯μ±μ΄ λμμ§λ€.
β λͺ μμ νμ λ³νλ§ μ¬μ©νκ³ μ묡μ νμ λ³νμ λ°μνμ§ μλλ‘ νλ©΄ μ’μ§ μμκΉ?
β μ’μμκ°μ΄κΈ΄ νλ μ³μ§ μλ€. λλ‘λ λͺ μμ νμ λ³νλ³΄λ€ μμ νμ λ³νμ΄ κ°λ μ± μΈ‘λ©΄μ λ μ’κΈ° λλ¬Έμ΄λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ ννμμ νκ°ν λ κ°λ°μμ μλμλ μκ΄μμ΄ μ½λμ λ¬Έλ§₯μ κ³ λ €ν΄ μ묡μ μΌλ‘ λ°μ΄ν° νμ μ κ°μ λ³ν(μ묡μ νμ λ³ν) ν λκ° μλ€.
μ묡μ μΌλ‘ λ°μ΄ν° νμ μ κ°μ λ³ν νλ©΄ μ¦, μ묡μ νμ μ΄ λ°μνλ©΄λ¬Έμμ΄
,μ«μ
,λΆλ¦¬μΈ
κ³Ό κ°μ μμ νμ μ€ νλλ‘ νμ μ μλ λ³ν.
1 + '2' // '12'
// '12'λ‘ λ¬Έμμ΄λ‘ μ묡μ νμ
λ³ν
+
μ°μ°μλ νΌμ°μ°μ μ€ νλ μ΄μμ΄ λ¬Έμμ΄ μΌλ, λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμ λ°λΌμ μλ°μ€ν¬λ¦½νΈ μμ§μ νΌμ°μ°μ μ€ λ¬Έμμ΄ νμ μ΄ μλ νΌμ°μ°μλ₯Ό λ¬Έμμ΄ νμ μΌλ‘ μ묡μ νμ λ³ν
νΌμ°μ°μλ?
λ€μ νΌμ°μ°μμ μ©μ΄ λ»μ 리λ§μΈλ νμλ©΄ μ°μ°μ λμμ νΌμ°μ°μλΌκ³ νλ€. κ·Έλ¦¬κ³ νΌμ°μ°μλ κ°μΌλ‘ νκ°λ μ μλ ννμμ΄μ΄μΌ νλ€.
1 - "1" // 0
1 * '10' // 10
1 / 'one' // NaN
+'0' // 0
+'string' // NaN
+'undefined' // NaN
μ°μ μ°μ°μ(
-
,*
,/
)μ μν μ μ«μ κ°μ λ§λλ κ²μΌλ‘ μ°μ μ°μ°μμ λͺ¨λ νΌμ°μ°μλ λͺ¨λ μ«μ νμ μ΄μ΄ νλ€. λ°λΌμ μλ°μ€ν¬λ¦½νΈ μμ§μ μ°μ μ°μ°μ ννμμ νκ°νκΈ° μν΄ νΌμ°μ°μ μ€μ μ«μ νμ μ΄ μλ νΌμ°μ°μλ₯Ό μ«μ νμ μΌλ‘ μ묡μ νμ λ³ν.
νΌμ°μ°μλ₯Ό μ«μ νμ μΌλ‘ λ³νν μ μλ κ²½μ°λ μ°μ μ°μ°μ μνν μ μμΌλ―λ‘ ννμμ νκ° κ²°κ³Όλ NaNμ΄λ€.
+
λ¨ν μ°μ°μλ₯Ό μ¬μ©νμ¬ νΌμ°μ°μκ° μ«μ νμ μ κ°μ΄ μλλ©΄ μ«μ νμ μ κ°μΌλ‘ μ묡μ νμ λ³νμ μνν μ μλ€.
μλ°μ€ν¬λ¦½νΈμμ μ«μ νμ μ΄ μλ κ°μ μ«μ νμ μΌλ‘ μ묡μ νμ λ³νμ μνν λ
λΉ λ¬Έμμ΄ ''
,λ¬Έμμ΄ 0
λΉ λ°°μ΄ []
,null
,false
λ 0μΌλ‘,true
λ 1λ‘ λ³νλλ€. κ°μ²΄μ λΉλ°°μ΄μ΄ μλ λ°°μ΄, undefinedλ λ³νλμ§ μμNaN
μ΄ λλ€.
if λ¬Έ
μ΄λforλ¬Έ
κ³Ό κ°μμ μ΄λ¬Έ
λλμΌν 쑰건 μ°μ¬μ
μ 쑰건μμ λΆλ¦¬μΈ κ°, μ¦ λ Όλ¦¬μ μ°Έ/κ±°μ§μΌλ‘ νκ°λμ΄μΌ νλ ννμμΈλ° μλ°μ€ν¬λ¦½νΈ μμ§μ 쑰건μμ νκ° κ²°κ³Όλ₯Ό λΆλ¦¬μΈ νμ μΌλ‘ μ묡μ νμ λ³ν νλ€.
if('') console.log(1);
if(true) console.log(2);
if(0) console.log(3);
if('str') console.log(4);
if(null) console.log(5);
// 2,4
μλ°μ€ν¬λ¦½νΈ μμ§μ λΆλ¦¬μΈ νμ μ΄ μλ κ°μ Truthy κ°(μ°ΈμΌλ‘ νκ°λλ κ°) λλ Falsyκ°(κ±°μ§μΌλ‘ νκ°λλ κ°)μΌλ‘ κ΅¬λΆ μ¦, μ μ΄λ¬Έμ 쑰건μκ³Ό κ°μ΄ λΆλ¦¬μΈ κ°μΌλ‘ νκ°λμ΄μΌ ν λ¬Έλ§₯μμ Truthyκ°μ trueλ‘, Falsyκ°μ falseλ‘ μ묡μ νμ λ³ν
π‘ falseλ‘ νκ°λλ Falsy κ°
π‘
false
,undefined
,null
,0, -0
,NaN
,λΉ λ¬Έμμ΄ ''
Falsy κ° μΈμ λͺ¨λ κ°μ λͺ¨λ trueλ‘ νκ°λλ Truthy κ°.
κ°λ°μμ μλμ λ°λΌ λͺ μμ μΌλ‘ νμ μ λ³κ²½ν μ μμΌλ©° νμ μ λ³κ²½νλ λ°©λ²μ λ€μνλ€
1. νμ€ λΉνΈμΈ μμμ ν¨μ (String, Number, Boolean)λ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
2. λΉνΈμΈ λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
3. μ묡μ νμ λ³νμ μ΄μ©νλ λ°©λ²
- String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²π μ묡μ νμ λ³ν
1. String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
String(1) // "1"
String(NaN) // "NaN"
2. Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
// Object.prototype.toString μ¬μ©
(1).toString() // "1"
(NaN).toString() // "NaN"
- Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- parseInt, parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ μ«μ νμ μΌλ‘ λ³ν κ°λ₯)
"+" λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²π μ묡μ νμ λ³ν"*" μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²π μ묡μ νμ λ³ν
1. Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
// Number μμ±μ ν¨μ μ΄μ©
Number('0') // 0
Number('-1') // -1
2. parseInt, parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ μ«μ νμ μΌλ‘ λ³ν κ°λ₯)
// parseInt, parseFloat ν¨μ μ¬μ©(λ¬Έμμ΄λ§ λ³ν κ°λ₯)
parseInt('0') // 0
parseFloat('10.53') // 10.53
- Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- ! λΆμ λ Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
1. Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
Boolean(0) // false
Boolean("") // false
Boolean("false") // true
2. ! λΆμ λ Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
!!0 // false
!!"" // false
!!"false" // true
λΆμ λ Όλ¦¬ μ°μ°μλ₯Ό ν λ² μ¬μ©ν΄λ λΆλ¦¬μΈ νμ μΌλ‘ λ³νλλ€.
console.log(typeof 0) // number
console.log(typeof !0) // boolean trueκ° λ°ν
λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ νΌμ°μ°μλ₯Ό νμ λ³ννμ§ μκ³ κ·Έλλ‘ λ°ν μ΄λ₯Ό λ¨μΆ νκ°λΌ νλ©° λ¨μΆ νκ°λ ννμμ νκ°νλ λμ€μ νκ° κ²°κ³Όκ° νμ λ κ²½μ° λλ¨Έμ§ νκ° κ³Όμ μ μλ΅νλ κ²μ λ§νλ€.
λ Όλ¦¬κ³±(&&) μ°μ°μμ λ Όλ¦¬ν©(||) μ°μ°μλ μΈμ λ 2κ°μ νΌμ°μ°μ μ€ μ΄λ νμͺ½μΌλ‘ νκ°λλ€.
λ Όλ¦¬κ³±(&&) : λ Όλ¦¬κ³± μ°μ°μ λ κ°μ νΌμ°μ°μκ° λͺ¨λ trueλ‘ νκ°λ λ trueλ₯Ό λ°ννλ€. λ Όλ¦¬κ³± μ°μ°μλ μ’νμμ μ°νμΌλ‘ νκ° μ§ννλ€.
"Cat" && "Dog" // Dog
λ Όλ¦¬ν©(||) : λ Όλ¦¬ν© μ°μ°μ λ κ°μ νΌμ°μ°μ μ€ νλλ§ trueλ‘ νκ°λμ΄λ trueλ₯Ό λ°ν λ Όλ¦¬ν© μ°μ°μλ μ’νμμ μ°νμΌλ‘ νκ° μ§ννλ€.
"Cat" || "Dog" // Cat
π‘ λ¨μΆ νκ°λ λ€μμ κ·μΉμ λ°λ₯Έλ€.
true || anything // true
false || anything // anything
true && anything // anything
false && anything // false
π‘ λ¨μΆ νκ°λ λ€μκ³Ό κ°μ μν©μμ μ μ©νλ€
ES11μμ λμ λ μ΅μ λ 체μ΄λ μ°μ°μ
?.
λ μ’νμ νΌμ°μ°μκ°null
λλundefined
μΈ κ²½μ°undefined
λ₯Ό λ°ννκ³ κ·Έλ μ§ μμΌλ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄κ°λ€.
μ΅μ λ 체μ΄λ μ°μ°μ?.
λ κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μκ°null
λλundefined
κ° μλμ§ νμΈνκ³ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν λ μ μ©.
ES11μμ λμ λ null λ³ν© μ°μ°μ
??
λ μ’νμ νΌμ°μ°μκ°null
λλundefined
μΈ κ²½μ° μ°νμ νΌμ°μ°μλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°ννλ€.
null λ³ν© μ°μ°μ??
λ λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ μ μ©νλ€.