μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- history api
- νλ‘κ·Έλλ¨Έμ€
- Gatsby
- position
- νλ‘ νΈμλ
- μκ³ λ¦¬μ¦
- fetch API
- float
- μ½λ©ν μ€νΈ
- REACT
- λ°λΈμ½μ€
- Flex
- λ°λΈμ½μ€3κΈ°
- useRef
- μλ°μ€ν¬λ¦½νΈ
- λΈλ‘κ·Έ
- CSS
- Props
- useEffect
- Today
- Total
Daehyunii's Dev-blog
09μ₯ νμ λ³νκ³Ό λ¨μΆ νκ° λ³Έλ¬Έ
09μ₯ νμ λ³νκ³Ό λ¨μΆ νκ°
Daehyunii 2022. 6. 28. 18:23
09μ₯ νμ λ³νκ³Ό λ¨μΆ νκ°
9.1 νμ λ³νμ΄λ?
μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ νμ μ΄ μλ€. κ°μ νμ μ κ°λ°μμ μλμ λ°λΌ λ€λ₯Έ νμ μΌλ‘ λ³νν μ μλ€. κ°λ°μκ° μλμ μΌλ‘ κ°μ νμ μ λ³ννλ κ²μ λͺ μμ νμ λ³ν λλ νμ μΊμ€ν μ΄λΌ νλ€. λ°λλ‘, κ°λ°μμ μλμλ μκ΄μμ΄ ννμμ νκ°νλ λμ€μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ μλ λ³νλκΈ°λ νλ€. μ΄λ₯Ό μ묡μ νμ λ³ν λλ νμ κ°μ λ³νμ΄λΌ νλ€. νμ λ³νμ΄λ κΈ°μ‘΄ μμ κ°μ μ¬μ©ν΄ λ€λ₯Έ νμ μ μλ‘μ΄ μμ κ°μ μμ±νκ³ μμ±λ κ°μΌλ‘ ννμμ νκ°νλ€. μ΄λ μ£Όμν΄μΌ ν μ μ μλ‘ μμ±λ μμ νμ μ κ°μ΄ κΈ°μ‘΄ λ³μ κ°μ μ¬ν λΉνμ¬ λ³κ²½νλ κ²μ΄ μλλΌ, ν λ²λ§ μ¬μ©ν ν λ²λ¦¬κ² λλ€. (μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°μ΄λ€.)
9.2 μ묡μ νμ λ³ν(νμ κ°μ λ³ν)
κ° μ°μ°μ λ±μ μ¬μ©ν λ λ°ννκ³ μ νλ κ°μ΄ μκ³ , νμν νΌμ°μ°μμ κ°μ΄ μ ν΄μ Έ μλ€. νμν νΌμ°μ°μμ κ°μ΄ μλ€λ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ묡μ νμ λ³νμ ν΅ν΄ νμν νμ μ κ°μ μμ±νμ¬ ννμμ νκ°νκ² λλ€. μ묡μ νμ λ³νμ΄ λ°μνλ©΄ λ¬Έμμ΄, μ«μ, λΆλ¦¬μΈκ³Ό κ°μ μμ νμ μ€ νλλ‘ νμ μ μλ λ³ννλ€.
9.2.1 λ¬Έμμ΄ νμ μΌλ‘ λ³ν
1) λ¬Έμμ΄ μ°κ²° μ°μ°μ : λ¬Έμμ΄ κ°μ λ§λ€μ΄ λ(κ·Έλ¬λ―λ‘, νΌμ°μ°μλ λ¬Έμμ΄μ΄ νμν¨)
ex) 0 + ' ' : "0"
ex) -0 + ' ' : "0"
2) ν νλ¦Ώ 리ν°λ΄ ννμ μ½μ : λ¬Έμμ΄ κ°μ λ§λ€μ΄ λ(κ·Έλ¬λ―λ‘, ννμμ λ¬Έμμ΄μ΄ νμν¨)
9.2.2 μ«μ νμ μΌλ‘ λ³ν
1) μ°μ μ°μ°μ : μ«μ κ°μ λ§λ€μ΄ λ(κ·Έλ¬λ―λ‘, νΌμ°μ°μλ μ«μ κ°μ΄ νμν¨)
2) λ/μ κ΄κ³ λΉκ΅ μ°μ°μ : λΆλ¦¬μΈ κ°μ λ§λ€μ΄ λ(κ·Έλ¬λ―λ‘, νΌμ°μ°μλ μ«μ κ°μ΄ νμν¨)
μ«μ κ° 0 μΌλ‘ λ³νλλ κ°λ€ | μ«μ κ° 1 λ‘ λ³νλλ κ°λ€ | μ«μ κ° NaN μΌλ‘ λ³νλλ κ°λ€ |
λΉ λ¬Έμμ΄ | true | λΉ λ¬Έμμ΄μ΄ μλ λ¬Έμμ΄(λ¬Έμμ΄μ΄ μ«μμΈ κ²½μ° μ μΈ) |
λΉ λ°°μ΄ | λΉ λ°°μ΄μ΄ μλ λ°°μ΄ | |
false | undefined | |
null | κ°μ²΄ |
9.2.3 λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
falsyλ‘ νκ°λμ΄ falseλ‘ μ묡μ νμ λ³νμ΄ μ΄λ€μ§λ κ° 6κ°μ§(μ΄ μ΄μΈμ λͺ¨λ κ°μ truthyλ‘ νκ°λμ΄ trueλ‘ νμ λ³νμ΄ μ΄λ€μ§λ€.)
1) false
2) undefined
3) null
4) 0, -0
5) NaN
6) ' '(λΉ λ¬Έμμ΄)
9.3 λͺ μμ νμ λ³ν
κ°λ°μμ μλμ λ°λΌ λͺ μμ μΌλ‘ νμ μ λ³κ²½νλ λ°©λ²μ λ€μνλ€.
1) νμ€ λΉνΈμΈ μμ±μ ν¨μ : κ°μ²΄λ₯Ό μμ±νκΈ° μν ν¨μ(new μ°μ°μμ ν¨κ» νΈμΆνλ€.)
2) νμ€ λΉνΈμΈ λ©μλ : λΉνΈμΈ κ°μ²΄μ λ©μλ
3) μ묡μ νμ λ³ν
9.3.1 λ¬Έμμ΄ νμ μΌλ‘ λ³ν
λ¬Έμμ΄ νμ μ΄ μλ κ°μ λ¬Έμμ΄ νμ μΌλ‘ λ³ννλ λ°©λ²μ΄λ€.
1) String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
2) Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
3) λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
//1.String μμ±μ ν¨μλ₯Ό newμ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
console.log(String(1));
console.log(String(NaN));
console.log(String(Infinity));
console.log(String(true));
console.log(String(false));
//2.object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
console.log((1).toString());
console.log((NaN).toString());
console.log((Infinity).toString());
console.log((true).toString());
console.log((false).toString());
//3.λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
console.log(1 + '');
console.log(NaN + '');
console.log(Infinity + '');
9.3.2 μ«μ νμ μΌλ‘ λ³ν
μ«μ νμ μ΄ μλ κ°μ μ«μ νμ μΌλ‘ λ³ννλ λ°©λ²μ΄λ€.
1) Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
2) parseInt, parsefloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ μ«μ νμ μΌλ‘ λ³ν κ°λ₯)
3) + λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
4) * μ΄ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
//1.Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
console.log(Number('0'));
console.log(Number('-1'));
console.log(Number('10.53'));
console.log(Number(true));
console.log(Number(false));
//2.parseInt, parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ λ³νμ΄ κ°λ₯)
console.log(parseInt('0'));
console.log(parseInt('3')); //μ€μλ₯Ό λ£μ΄λ μ μ μ«μ κ°λ§ λ°νν¨
console.log(parseFloat('3.14'));
//3.λ¨ν μ°μ μ°μ°μ + λ₯Ό μ΄μ©νλ λ°©λ²
console.log(+'10');
console.log(+'3.14');
console.log(+true);
console.log(+false);
console.log(+undefined);
console.log(+null);
console.log(+'hello');
console.log(+'');
console.log(+'53');
//4.μ΄ν μ°μ μ°μ°μ * λ₯Ό μ΄μ©νλ λ°©λ²
console.log(1 * '1');
console.log(1 * '-1');
console.log(1 * '0');
console.log(1 * '10.53');
console.log(1 * true);
console.log(1 * false);
9.3.3 λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
λΆλ¦¬μΈ νμ μ΄ μλ κ°μ λΆλ¦¬μΈ νμ μΌλ‘ λ³ννλ λ°©λ²μ΄λ€.
1) Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
2) ! λΆμ λ Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
//1.Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
//μμ λ°°μ΄ λ΄μ©μ²λΌ falsyλ‘ νκ°λλ 6κ°μ§λ₯Ό μ μΈνκ³ λ μ λΆ trueκ°μ λ°νν¨
console.log(Boolean('')); //false
console.log(Boolean(0)); //false
console.log(Boolean(-0)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean(null)); //false
console.log(Boolean(false)); //false
console.log(Boolean(NaN)); //false
//2.λΆμ λ
Όλ¦¬ μ°μ°μ ! λ₯Ό λ λ² μ¬μ©νλ λ°©λ²
console.log(!!'x'); //true
console.log(!!''); //false
console.log(!!NaN); //false
console.log(!!undefined); //false
console.log(!!0); //false
console.log(!!-0); //false
console.log(!!null); //false
console.log(!!false); //false
9.4 λ¨μΆ νκ°
9.4.1 λ Όλ¦¬ μ°μ°μλ₯Ό μ¬μ©ν λ¨μΆ νκ°
μμ λ°°μ΄ λ Όλ¦¬ μ°μ°μ λ Όλ¦¬κ³±(&&) κ³Ό λ Όλ¦¬ν©(||) μ°μ°μ ννμμ μΈμ λ 2κ°μ νΌμ°μ°μ μ€ μ΄λ νμͺ½μΌλ‘ νκ°λλ€. λ Όλ¦¬κ³± μ°μ°μμ κ²½μ°μλ λ κ°μ νΌμ°μ°μκ° λͺ¨λ trueλ‘ νκ°λ λ trueλ₯Ό λ°ννλ€. λ Όλ¦¬ν© μ°μ¬μλ λ κ°μ νΌμ°μ°μ μ€ νλλ§ trueλ‘ νκ°λμ΄λ tureλ₯Ό λ°ννλ€. λ Όλ¦¬ν© μ°μ°μμ λ Όλ¦¬κ³± μ°μ°μλ μ’νμμ μ°νμΌλ‘ νκ°κ° μ§νλλ€. μ΄λ λ Όλ¦¬κ³±κ³Ό λ Όλ¦¬ν© μ°μ°μλ λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ νΌμ°μ°μλ₯Ό νμ λ³ννμ§ μκ³ κ·Έλλ‘ λ°ννλ€. μ΄λ₯Ό λ¨μΆ νκ°λΌκ³ νλ€. μ¦, λ€μ λ§ν΄ λΆλ¦¬μΈ κ°μ΄ μλ νΌμ°μ°μλ λΆλ¦¬μΈ κ°μΌλ‘ μ묡μ νμ λ³νμ΄ μ΄λ€μ Έ λ Όλ¦¬ μ°μ°μ ννμμ΄ νκ°λκ³ , λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ μ§λ νΌμ°μ°μμ κ°μ κ·Έλλ‘ λ°νν΄ μ£Όλ κ²μ΄λ€.
//λ
Όλ¦¬κ³± μ°μ°μ &&μ λ¨μΆνκ°
console.log('' && 'dog'); // λΉ λ¬Έμμ΄μ falsyλ‘ νκ°λλ―λ‘, κ²°κ³Όλ₯Ό κ²°μ νλ '' μ΄ λ°νλ¨
console.log('cat' && 'dog'); //dog
console.log('cat' && false); //false
console.log(false && 'dog'); //false
console.log(false && false); //첫 λ²μ§Έ νΌμ°μ°μ false
//λ
Όλ¦¬ν© μ°μ°μ ||μ λ¨μΆνκ°
console.log('cat' || 'dog'); //cat
console.log('cat' || false); //cat
console.log(false || 'dog'); //dog
console.log(false || false); //λ λ²μ§Έ νΌμ°μ°μ false
λ¨μΆ νκ°λ₯Ό μ¬μ©νλ©΄ ifλ¬Έμ λ체ν μ μλ€.
//μ΄λ€ μ‘°κ±΄μ΄ Truthy κ° μΌ λ 무μΈκ°λ₯Ό ν΄μΌ νλ κ²½μ°
var done = true;
var message = '';
//if쑰건문 νμ©
if(done) message = 'μλ£';
console.log(message); //μλ£
//λ
Όλ¦¬κ³±μ νμ©
message = done && 'μ±κ³΅';
console.log(message); //μ±κ³΅
//μ΄λ€ μ‘°κ±΄μ΄ falsy κ° μΌ λ 무μΈκ°λ₯Ό ν΄μΌ νλ κ²½μ°
var done = false;
var message1 = '';
//if쑰건문 νμ©
if(!done) message1 = 'μλ£';
console.log(message1); //μλ£
//λ
Όλ¦¬κ³±μ νμ©
message1 = done || 'μ±κ³΅';
console.log(message1); //μ±κ³΅
//μΌν 쑰건 μ°μ°μμ νμ©
var done = true;
var message2 = '';
if(done) message2 = 'μλ£';
else message2 = 'λ―Έμλ£';
console.log(message2); //μλ£
message2 = done ? 'μλ£' : 'λ―Έμλ£'
console.log(message2) //μλ£
λ¨μΆ νκ°λ λν μ¬λ¬ μν©μμ μ μ©νκ² μ¬μ©λλ€.(μμΈν μ¬νμ νμ )
1) κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μκ° null λλ undefinedκ° μλμ§ νμΈνκ³ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν λ
2)ν¨μ 맀κ°λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ
9.4.2 μ΅μ λ 체μ΄λ μ°μ°μ (?.)
ES11μμ λμ λ μ΅μ λ 체μ΄λ μ°μ¬μ (?.)λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° undefinedλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄κ°λ€. μ΅μ λ 체μ΄λ μ°μ°μλ κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μκ° null λλ undefinedκ° μλμ§ νμΈνκ³ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν λ μ μ©νλ€. μ΅μ λ 체μ΄λ μ°μ°μκ° λμ λκΈ° μ΄μ μλ λ Όλ¦¬ μ°μ°μ &&λ₯Ό μ¬μ©ν λ¨μΆ νκ°λ₯Ό ν΅ν΄ λ³μκ° null λλ undefinedμΈμ§ νμΈνμλ€.
//λ
Όλ¦¬κ³± λ
Όλ¦¬ μ°μ°μλ₯Ό μ¬μ©ν΄μ λ³μκ° null λλ undefinedκ° μλμ§ νμΈνλ κ²½μ°
var elem = null;
var value = elem && elem.vaule;
console.log(value);
//μ΅μ
λ 체μ΄λ μ°μ°μλ₯Ό μ¬μ©νμ¬ λ³μκ° null λλ undefinedκ° μλμ§ νμΈνλ κ²½μ°
var elem = null;
var value = elem ?. elem.value;
console.log(value);
μ΅μ λ 체μ΄λ μ°μ°μκ° λ±μ₯ν μ΄μ λ λ Όλ¦¬κ³± μ°μ°μλ₯Ό μ΄μ©νλ κ²½μ° μ’νμ νΌμ°μ°μκ° Falsy κ°(null, undefined, 0, -0, false, NaN, '')μ΄λ©΄ μ’ν νΌμ°μ°μλ₯Ό κ·Έλλ‘ λ°ννλ€. νμ§λ§ 0μ΄λ ''μ κ°μ²΄λ‘ νκ°λ λλ μκΈ° λλ¬Έμ λ¬Έμ κ° λ°μν μ μλ€.
9.4.3 null λ³ν© μ°μ°μ (??)
ES11μμ λμ λ null λ³ν© μ°μ°μ (??)λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° μ°νμ νΌμ°μ¬μλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°ννλ€. null λ³ν© μ°μ°μλ λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ μ μ©νλ€. null λ³ν© μ°μ°μκ° λμ λκΈ° μ΄μ μλ λ Όλ¦¬ μ°μ°μ ||λ₯Ό μ¬μ©ν λ¨μΆ νκ°λ₯Ό ν΅ν΄ λ³μμ κΈ°λ³Έκ°μ μ€μ νλ€.
//λ
Όλ¦¬ν© μ°μ°μ ||λ₯Ό μ¬μ©νμ¬ λ³μμ κΈ°λ³Έκ°μ μ€μ νλ λ°©λ²
var foo = null || 'default string';
console.log(foo);
//null λ³ν© μ°μ°μλ₯Ό μ¬μ©νμ¬ λ³μμ κΈ°λ³Έκ°μ μ€μ νλ λ°©λ²
var foo = null ?? 'default string1';
console.log(foo);
null λ³ν© μ°μ°μκ° λ±μ₯ν μ΄μ λ λ Όλ¦¬ν© μ°μ°μλ₯Ό μ΄μ©νλ κ²½μ° μ’νμ νΌμ°μ°μκ° Falsy κ°(null, undefined, 0, -0, false, NaN, '')μ΄λ©΄ μ°ν νΌμ°μ°μλ₯Ό κ·Έλλ‘ λ°ννλ€. νμ§λ§ 0μ΄λ ''λ κΈ°λ³Έκ°μΌλ‘μ μ ν¨νλ€λ©΄ λ¬Έμ κ° λ°μν μ μλ€.
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
11μ₯ μμ κ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.07.01 |
---|---|
10μ₯ κ°μ²΄ 리ν°λ΄ (0) | 2022.06.29 |
08μ₯ μ μ΄λ¬Έ (0) | 2022.06.27 |
07μ₯ μ°μ°μ (0) | 2022.06.25 |
05μ₯ ννμκ³Ό λ¬Έ, 06μ₯ λ°μ΄ν° νμ (0) | 2022.06.23 |