2025. 8. 5. 19:43γFront-end/JavaScript

λͺ©μ°¨
5-1. λ§μ μ°μ°μ
5-2. λλ± μ°μ°μ
5-3. λΉκ΅ μ°μ°μ
5-4. λ Όλ¦¬ μ°μ°μ
5-5. 쑰건 ννμ
1. νλ³ν
μλ°μ€ν¬λ¦½νΈλ κ΄λν νμ λ³νμ μννμ¬, μ΄λ€ κ²½μ°μ λ°μ΄ν° νμ λ³νμ΄ λ°μνλ μ§ μμμΌ νλ€.
μλ°μ€ν¬λ¦½νΈμ νμ λ³νμ λ κ°μ§κ° μλ€.
- λͺ μμ κ°μ λ³ν: κ°λ°μμ μλμ μΈ νμ λ³ν
- μμμ κ°μ λ³ν: μ°μ° μ€ λ΄λΆμ μΌλ‘ νμ λ³ν
κ° νμ (ν)λ§λ€μ λͺ μμ κ°μ λ³νλ€μ λ³΄κ³ μμμ κ°μ λ³νμ λͺ°μμ λ΄λ³΄μ.
2. λ¬ΈμνμΌλ‘ λ³ν
λ€λ₯Έ νμ μμ λ¬Έμμ΄ νμ μΌλ‘μ λ³νμ ToString μΆμ μ°μ° λͺ μΈλ₯Ό κΈ°μ€μΌλ‘ μ΄λ£¨μ΄μ§λ€.
λ¬Έμμ΄μ λ³νμ λλΆλΆ μμΈ‘ κ°λ₯ν λ°©μμΌλ‘ μΌμ΄λλ€.
| νμ | λ¬Έμμ΄ λ³ν κ²°κ³Ό |
| undefined | 'undefined' |
| null | 'null' |
| boolean | true β’ 'true', false β’ 'false' |
| number | Number.toString()μ κ²°κ³Ό λ°ν(3 β’ '3') |
| Symbol | *TypeError |
| BigInt | BigInt.toString()μ κ²°κ³Ό λ°ν(3n β’ '3n') |
| object | κ°μ²΄λ₯Ό μμ νμ μΌλ‘ λ°ν(ToPrimitiveμΆμμ°μ°) β’ ToString μΆμ μ°μ° μνκ° λ°ν |
*Symbolμ΄ λ³νλμ΄ κ°μ²΄μ λ€λ₯Έ νλ‘νΌν°μ μ κ·Όνλ κ²μ λ°©μ§νκ³ μ TypeError λ°μ
String(), toString() λ©μλλ₯Ό μ¬μ©ν΄μ νλ³νμ μΌμΌν¨λ€.
// String()
console.log(String(false)); // 'false'
console.log(String(3)); // '3'
// toString()
const bool = false;
console.log(bool.toString()); // 'false'
const num = 4;
console.log(num.toString()); // '4'
String()κ³Ό toString()μ΄ μ°¨μ΄λ₯Ό 보μ΄λ κ³³μ null, undefinedλ₯Ό λ³νν λμ΄λ€.
console.log(String(null)) // 'null'
console.log(String(undefined)) // 'undefined'
undefined.toString(); // TypeError
null.toString(); // TypeError
nullκ³Ό undefinedλ μμ νμ μ΄λ©°, κ°μ²΄κ° μλκΈ° λλ¬Έμ
κ°μ²΄μμ μ¬μ©ν μ μλ νλ‘νΌν°μΈ toString()μ μ¬μ©ν μ μλ€.
String()μ λͺ¨λ νμ μ΄ λͺ μΈ κ·μΉμ μ ννκ² λ°λ₯΄λ―λ‘, λͺ μμ κ°μ λ³νμ νκ³ μΆλ€λ©΄ String() ν¨μλ₯Ό μ¬μ©νλ κ²μ΄ λ μ’λ€.
3. μ«μνμΌλ‘ λ³ν
λ€λ₯Έ νμ μμ μ«μ νμ μΌλ‘μ λ³νμ ToNumber μΆμ μ°μ° λͺ μΈλ₯Ό κΈ°μ€μΌλ‘ μ΄λ£¨μ΄μ§λ€.
| νμ | μ«μ λ³ν κ²°κ³Ό |
| undefined | NaN |
| null | +0 |
| boolean | true β’ 1, false β’ 0 |
| string | μ«μλ‘ λ³κ²½ λΆκ°λ₯ν κ° β’ NaN, μ«μν λ¬Έμμ΄ β’ μ«μ |
| Symbol | TypeError |
| BigInt | TypeError |
| object | κ°μ²΄λ₯Ό μμ νμ μΌλ‘ λ°ν(ToPrimitiveμΆμμ°μ°) β’ ToNumber μΆμ μ°μ° μνκ° λ°ν |
Number(), parseInt() λ©μλλ₯Ό μ¬μ©ν΄μ νλ³νμ μΌμΌν¨λ€.
// Number()
console.log(Number('3')); //3
console.log(Number(true)); // 1
console.log(NUmber(null)); // 0
// parseInt(λ¬Έμμ΄, κΈ°μ(μ§μ))
console.log(parseInt('10', 10)); // 10
console.log(parseInt('-1', 10)); // -1
console.log(Number('10A', 10)); // NaN
console.log(parseInt('10A', 10)); // 10
- parseInt() ν¨μ
→ λ¬Έμμ΄λ§ λμμΌλ‘ λ³ννλ€.
→ κ°μ΄ λ¬Έμμ΄μ΄ μλλΌλ©΄ λ¬Έμμ΄λ‘ λ°ν ν μ¬μ©νλ©°, κ·Έ κ³Όμ μ ToString μ°μ° κ³Όμ μ λ°λ₯Έλ€. - Number()λ λ³κ²½ λΆκ°λ₯ν λ¬Έμμ λν΄ λ°λ‘ NaNμ λ°ννμ§λ§,
parseInt()λ λΆκ°λ₯ν λ¬Έμκ° λνλ λκΉμ§ μ΅λν λ³ννλ€.
4. λΆλ¦°νμΌλ‘ λ³ν
λ€λ₯Έ νμ μμ λΆλ¦¬μΈ νμ μΌλ‘μ λ³νμ ToBoolean μΆμ μ°μ° λͺ μΈλ₯Ό κΈ°μ€μΌλ‘ μ΄λ£¨μ΄μ§λ€.
λ Όλ¦¬ μ°μ°μμ truthy/falsy κ°μ κΈ°μ€λ ToBooleanμ΄λ€.
| νμ | λΆλ¦¬μΈ λ³ν κ²°κ³Ό |
| undefined | false |
| null | false |
| number | +0, -0, NaN β’ false, κ·Έ μΈ μ«μ β’ true |
| string | λΉ λ¬Έμμ΄ β’ false, κ·Έ μΈ λ¬Έμμ΄ β’ true |
| Symbol | true |
| BigInt | 0n β’ false, κ·Έ μΈ BigInt μ μ β’ true |
| object | true |
Boolean(), μ΄μ€ λΆμ μ°μ°μλ₯Ό μ¬μ©ν΄μ νλ³νμ μΌμΌν¨λ€.
const a = null;
const b = 0;
const c = '';
const d = {};
const e = [];
console.log(Boolean(a)); // false
console.log(Boolean(b)); // false
console.log(Boolean(c)); // false
console.log(Boolean(d)); // true
console.log(Boolean(e)); // true
console.log(!!a); // false
...
5. μμμ κ°μ λ³ν
μμμ κ°μ λ³νμ μ°μ° μ€μ λ΄λΆμ μΌλ‘ νμ μ λ³ννλ κ²μ΄λ€.
1. λ§μ μ°μ°μ
1. νΌμ°μ°μ μ€ νλκ° λ¬Έμμ΄ νμ μΈ κ²½μ°, λλ¨Έμ§ νμ λ λ¬Έμμ΄λ‘ λ³ννμ¬ λ³ν©
2. νΌμ°μ°μ μ€ νλκ° κ°μ²΄μ΄λ©° λ¬Έμμ΄ λ³νμ΄ κ°λ₯ν κ²½μ°, λ¬Έμμ΄λ‘ λ³ννμ¬ λ³ν©
3. νΌμ°μ°μκ° λͺ¨λ λ¬Έμμ΄/κ°μ²΄κ° μλ κ²½μ°, μ«μλ‘ λ³ννμ¬ μ°μ°. λ³ν κ²°κ³Όμ νμ μ΄ κ°κ° λ€λ₯΄λ©΄ TypeError λ°μ
//1
console.log(1 + ''); // '1'
//2
console.log(1 + {}); // '1[Object object]'
//3
console.log(1 + true); // 2
2. λλ± μ°μ°μ
1. νΌμ°μ°μ μ€ νλλ String, νλλ NumberμΈ κ²½μ°, String β’ Number λ³ν
2. νΌμ°μ°μ μ€ νλλ String, νλλ BigIntμΈ κ²½μ°, String β’ BigInt λ³ν
3. νΌμ°μ°μ μ€ νλλ null, νλλ undefinedμΈ κ²½μ°, λλ±νκ² νλ¨
4. νΌμ°μ°μ μ€ νλκ° BooleanμΌ κ²½μ°, Boolean β’ Number λ³ν
5. νΌμ°μ°μ μ€ νλλ Object, νλλ String/Number/BigInt/Symbol μ€ νλμΌ κ²½μ°, Object β’ Primitive λ³ν
6. νΌμ°μ°μ μ€ νλλ Number, νλλ BigIntμΈ κ²½μ° λ΄λΆμ μΈ μ«μ λΉκ΅ μκ³ λ¦¬μ¦μ λ°λΌ λΉκ΅ν κ²°κ³Ό λ°ν
// 1. Str to Num
console.log(1 == '1'); // true
// 2. Str to BigInt
console.log(1n == '1'); // true
// 3. null & undefined
console.log(null == undefined); // true
console.log(undefined == null); // true
// 4. Boolean
console.log(true == 1); // true
// 5. Object to Primitive
console.log('[object Object]' == {}); // true
// 6. Num & BigInt
console.log(1 = 1n); // true
λλ± μ°μ°μμμ νμ λ³νμ κ°λ μ±μ΄ λ¨μ΄μ§λ κ²½μ°κ° μλ€.
λ°λΌμ μ¬μ©ν λ νμλ€κ³Ό 컨벀μ μ μ ν΄λκ³ μ¬μ©νλ κ²μ΄ μ’λ€.
3. λΉκ΅ μ°μ°μ
λ¬Έμμ΄μ λΉκ΅ : κ° λ¬Έμλ₯Ό μνλ²³ μμλ‘ λΉκ΅
console.log('a' < 'b'); // true
console.log('a' < '04'); // true : '1'κ³Ό '0'μ λ¨Όμ λΉκ΅νκ³ , κ·Έ λ€μ λ¬Έμλ₯Ό λΉκ΅
λ°°μ΄μ λΉκ΅ : κ° λ¬Έμμ΄λ‘ λ³νλκΈ° λλ¬Έμ λ¬Έμμ΄λΌλ¦¬μ λΉκ΅λ₯Ό μν
console.log(['a'] < ['b']); // true
λ¬Έμμ΄ μΈμ λΉκ΅ : μ«μλ‘ λ³ννμ¬ λΉκ΅
console.log('1' < 2n); // true
console.log(1 < true); // false
console.log(1n < 2); // true
4. λ Όλ¦¬ μ°μ°μ
λ Όλ¦¬ μ°μ° κ²°κ³Όκ°μ boolean νμ μ΄ μλ μλ μλ€.
const a = null;
const b = 'javascript';
const c = 1;
console.log(a && b ); // null
console.log(b || c ); // 'javascript'
// 리μ‘νΈμμ 쑰건μ λ°λΌ μ»΄ν¬λνΈ λ λλ§ν λ μμ£Ό μ¬μ©νλ λ°©μ
const a = true;
function doSomething() { ... }
...
a && doSomething() // aκ° truthyμΌ λλ§ ν¨μ μ€ν
5. 쑰건 ννμ
쑰건 ννμμμλ λͺ¨λ κ°μ΄ booleanμΌλ‘ λ³νλμ΄ νκ°λλ€.
const a = 0; // μ«μν
const b = 'javascript'; // λ¬Έμμ΄ν
const c = null; // λΆλ¦°ν
if (a) { // falsy
console.log('νΈμΆλμ§ μμ');
}
while (b) { // truthy
console.log('truthy');
break;
}
console.log( c ? 'truthy' : 'falsy'); // 'falsy'
+ν΄μ¦
null == undefined; // true
false == 0; // true
0 == []; // false
String([1, 2, 3]); // '1, 2, 3'
'a' + {}; // 'a[Object object]'
'1' < ['02']; // false
NaN === NaN; // false
[] && 'null' || 'default'; // 'null'
[] || 'default'; // []
const obj = {
valueOf() {
return 1;
},
toString() {
return 'string'
}
};
Number(obj); // 1
μ°Έκ³
https://ko.javascript.info/type-conversions
ν λ³ν
ko.javascript.info
κΈ°μ΄λΆν° μμ±κΉμ§, νλ°νΈμλ (μ΄μ¬μ±|νμ )
κΈ°μ΄λΆν° μμ±κΉμ§, νλ°νΈμλ - μμ€24
λλμ΄, μ΅μ΄μ κ°λ‘ μκ° λμμ΅λλ€! νλ°νΈμλμ κ°λ κ³Ό μ리λ₯Ό λͺ¨λ λ΄μ “νλ°νΈμλμ μ μ”첫째, κ°λ κ³Ό μ€μ΅, μ μ©κ³Ό ν¨μ¨μ λͺ¨λ μ‘μ λμ! νννκ² κ°λ μ μ‘κ³ , κ°λ μ λ°λ‘ μ
www.yes24.com
'Front-end > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| B6 : ꡬ문과 μ°μ°μ (9) | 2025.08.11 |
|---|---|
| μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν (4) | 2025.08.08 |
| B3 : λ³μ, μμ, μλ£ν (4) | 2025.08.05 |
| B2 : JS κΈ°λ³Έ κ°λ (1) | 2025.08.05 |
| λͺ¨λ (0) | 2025.03.11 |
GitHub