ν°μ€ν 리 λ·°
[JavaScript] νμ λ³νκ³Ό λ¨μΆ νκ°
κ°λ°κ°κ΅΄πΈ 2022. 7. 15. 20:55νμ λ³νμ΄λ?
μλ°μ€ν¬λ¦½νΈλ κ°μ νμ μ λ€λ₯Έ νμ μΌλ‘ λ³νν μ μλλ°, μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°μ λλ€. λ°λΌμ μ¬μ€ κ°μ μ§μ λ³κ²½νλ κ²μ μλκ³ νΌμ°μ°μμ κ°μ μ묡μ μΌλ‘ νμ λ³νν΄ μλ‘μ΄ νμ μ κ°μ λ§λ€μ΄ μ¬μ©νκ³ λ²λ¦½λλ€.
- λͺ μμ νμ λ³ν(νμ μΊμ€ν ) : κ°λ°μκ° μλμ μΌλ‘ κ°μ νμ μ λ³ν μν΄
- μ묡μ νμ λ³ν(νμ κ°μ λ³ν) : μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ μλ λ³νλ¨
μ묡μ νμ λ³ν
κ°λ°μμ μλμλ μκ΄μμ΄ μ½λμ λ¬Έλ§₯μ κ³ λ €ν΄ μ묡μ μΌλ‘ λ°μ΄ν° νμ μ κ°μ λ³νμν€λ κ²μ μλ―Έν©λλ€.
μ½λ λ¬Έλ§₯μ λΆν©νμ§ μλ μν©μμ κ°κΈμ μλ¬λ₯Ό λ°μμν€μ§ μκ³ νμ μ λ³νμμΌ ννμμ νκ°νκ² λ©λλ€.
λ¬Έμμ΄ νμ μΌλ‘ λ³ν
λ¬Έμμ΄ μ°κ²° μ°μ°μ +λ₯Ό ν΅ν΄ λ¬Έμμ΄κ³Ό ν¨κ» λ€μ΄μ¨ νΌμ°μ°μλ₯Ό λ¬Έμμ΄ νμ μΌλ‘ μ묡μ νμ λ³νμ μ§νν©λλ€.
// μ묡μ λ¬Έμμ΄ νμ
λ³νμ μμλ€
1 + '2'; // "12"
true + ''; // "true"
null + ''; // "null"
undefined + ''; // "undefined"
(Symbol()) + ''; // TypeError : μ¬λ²μ stringμΌλ‘ λ³νμ΄ λΆκ°λ₯!
({}) + ''; // "[object,object]"
Math + ''; // "[object Math]"
[] + ''; // ""
[10,20] + ''; // "10,20"
(function(){}) + ''; // "function(){}"
Array + ''; // "function Array() { [native code] }"
μ«μ νμ μΌλ‘ λ³ν
μ°μ μ°μ°μ(*, /, -)μ μν μ μ«μ κ°μ λ§λλ κ²μ λλ€. λ°λΌμ μ°μ μ°μ°μμ λͺ¨λ νΌμ°μ°μλ μ½λ λ¬Έλ°±μ λͺ¨λ μ«μ νμ μΌλ‘ λ³νλ©λλ€.
// μ묡μ μ«μ νμ
λ³νμ μμλ€
1 - '2'; // -1
1 * '10'; // 10
1 / 'one'; // NaN
// λΉκ΅λ₯Ό μν΄ μ«μ νμ
μΌλ‘ λ³ν
'1' > 0 // true
// λ¨ν μ°μ°μλ νΌμ°μ°μκ°μ΄ μ«μ νμ
μ΄μ΄μΌν¨
+''; // 0
+'0'; // 0
+'1'; // 1
+'string'; // NaN
+true; // 1
+null; // 0
+undefined; // NaN
//μ¬λ² νμ
μ μ«μλ‘ λ³ν λΆκ°λ₯
+Symbol(); // TypeError
// κ°μ²΄ νμ
+{}; // NaN
+[]; // 0
+[10,20]; // NaN
λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
μλ°μ€ν¬λ¦½νΈ μμ§μ 쑰건μμ νκ° κ²°κ³Όλ₯Ό λΆλ¦¬μΈ νμ μΌλ‘ μ묡μ νμ λ³νμ μ§νν©λλ€. μ΄λ, λΆλ¦¬μΈ νμ μ΄ μλ κ°μ Truthyκ°κ³Ό Falsyκ°μΌλ‘ ꡬλΆν ν κ°κ° true μ falseλ‘ νμ μ λ³νν©λλ€.
Falsyκ°μ μ’ λ₯λ false, undefined, null, 0, -0, NaN, ''(λΉ λ¬Έμμ΄) μΌλ‘ ꡬμ±λλ©° μ΄λ€μ μ μΈν λͺ¨λ κ°μ Truthyκ°μ μΌλ‘ νκ°λ©λλ€.
λͺ μμ νμ λ³ν
κ°λ°μμ μλμ λ°λΌ νμ μ λ³κ²½νλ λ°©λ²μ λ€μν©λλ€.
- *νμ€ λΉνΈμΈ μμ±μ ν¨μ(String, Number, Boolean)λ₯Ό new μ°μ°μ μμ΄ νΈμΆ
- *νμ€ λΉνΈμΈ λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
- μ묡μ νμ λ³νμ μ΄μ©νλ λ°©λ²
*νμ€ λΉνΈμΈ : μλ°μ€ν¬λ¦½νΈμμ κΈ°λ³Έ μ 곡νλ ν¨μ
λ¬Έμμ΄ νμ μΌλ‘ λ³ν
- String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆ
String(1); // "1"
String(NaN); // "NaN"
String(true); // "true"
- Object.protorype.toString λ©μλλ₯Ό μ¬μ©
(1).toString(); // "1"
(NaN).toString(); // "NaN"
(true).toString(); // "true"
- λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©
1 + ''; // "1"
true + ''; // true
μ«μ νμ μΌλ‘ λ³ν
- Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆ
Number('0'); // 0
Number('-10.5'); // -10.5
Number(true); // 1
- parseInt, parseFloat λ©μλλ₯Ό μ¬μ©
parseInt('0'); // 0
parseFloat('10.5'); // 10.5
- + λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©
+'0'; // 0
- * μ°μ μ°μ°μλ₯Ό μ΄μ©
'0' * 1; // 0
true * 1; // 1
λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
- Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆ
Boolean('x'); // true
Boolean(''); // false
Boolean(0); // false
Boolean(Infinity); // true
Boolean(NaN); // false
- ! λΆμ λ Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
!!'x'; // true
!!'flase' // false
!!0; // false
λ¨μΆ νκ°
ννμμ νκ°νλ λμ€μ νκ° κ²°κ³Όκ° νμ λ κ²½μ° λλ¨Έμ§ νκ° κ³Όμ μ μλ΅νλ κ²μ μλ―Έν©λλ€.
λ Όλ¦¬ μ°μ°μλ₯Ό μ΄μ©ν λ¨μΆ νκ°
λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ νΌμ°μ°μλ₯Ό νμ λ³ννμ§ μκ³ κ·Έλλ‘ λ°νν©λλ€.
λ¨μΆ νκ° ννμ | νκ° κ²°κ³Ό |
true || anything | true |
false || anything | anything |
true && anything | anything |
false && anything | false |
λ¨μΆ νκ°λ₯Ό μ΄μ©νλ©΄ μ μ©ν κ²½μ°λ λ€μκ³Ό κ°μ΅λλ€.
- κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μκ° null λλ undefinedκ° μλμ§ νμΈνκ³ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν λ
var elem = null;
var value = elem && elem.value; // null
- ν¨μ 맀κ°λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ
function getStringLen(str) {
str = str || '';
return str.length;
}
getStringLen(); // 0
getStringLen('a'); // 1
μ΅μ λ 체μ΄λ μ°μ°μ
?. λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° undefinedλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ°νμ νλ‘νΌν°λ₯Ό μ°Έμ‘°λ₯Ό μ΄μ΄κ°λλ€.
var elem = null;
var valuve = elem?.value;
console.log(value); // undefined
// 0μ΄λ ''λ κ°μ²΄λ‘ νκ°λ λλ μμ΄μ ?.λ₯Ό μ¬μ©ν©λλ€.
var str = '';
var len = str?.length;
console.log(len); // 0
null λ³ν© μ°μ°μ
?? λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° μ°νμ νΌμ°μ°μλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°νν©λλ€. λ°λΌμ null λ³ν© μ°μ°μλ λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ μ μ©ν©λλ€.
var foo = null ?? 'string';
console.log(foo); // "string"
// Falsy κ°μΈ 0μ΄λ ''λ κΈ°λ³Έκ°μΌλ‘μ μ ν¨νλ€λ©΄ μκΈ°μΉ μμ λμμ΄ λ°μν μλ μμ΄ null λ³ν© μ°μ°μλ₯Ό μ΄μ©ν©λλ€.
var foo = '' ?? 'string';
console.log(foo); // "string"
[μΆμ²] λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive
'JavaScript > λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript] μμ κ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.07.18 |
---|---|
[JavaScript] κ°μ²΄ 리ν°λ΄ (0) | 2022.07.18 |
[JavaScript] μ μ΄λ¬Έ (0) | 2022.07.15 |
[JavaScript] μ°μ°μ (0) | 2022.07.15 |
[JavaScript] λ°μ΄ν° νμ (0) | 2022.07.14 |
- Total
- Today
- Yesterday
- 2019 μΉ΄μΉ΄μ€ κ°λ°μ κ²¨μΈ μΈν΄
- http
- map
- λ€νΈμν¬
- TDD
- νλ‘ν μ½
- λ€μ΄λλ―Ή νλ‘κ·Έλλ°
- λμμΈ ν¨ν΄
- ν¨μν νλ‘κ·Έλλ°
- νλ‘κ·Έλλ¨Έμ€
- μΉ΄μΉ΄μ€ μΈν΄
- λ°±μ€
- JavaScript
- λͺ¨λ μλ°μ€ν¬λ¦½νΈ deep dive
- μ½λ©ν μ€νΈ
- μ΄λΆνμ
- νλ‘νΌν°
- fp
- ν¬ν¬μΈν°
- κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
- μ΄μ체μ
- λ μ컬 νκ²½
- git
- Baekjoon
- μ μ λ³μ
- μκ³ λ¦¬μ¦
- λ°±μ€ javascript
- λ°±μ€ node.js
- μλ°
- μλ°μ€ν¬λ¦½νΈ
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 | 31 |