1. λ°μ΄ν° νμ
1) λ°μ΄ν° νμ μ’ λ₯
κ΅¬λΆ | λ°μ΄ν° νμ | μ€λͺ |
μμ νμ | μ«μ(number) νμ | μ«μ, μ μμ μ€μ κ΅¬λΆ μμ΄ νλμ μ«μ νμ λ§ μ‘΄μ¬ |
μμ νμ | λ¬Έμμ΄(string) νμ | λ¬Έμμ΄ |
μμ νμ | λΆλ¦¬μΈ(boolean) νμ | λ Όλ¦¬μ μ°Έ(true)μ κ±°μ§(false) |
μμ νμ | undefined νμ | var ν€μλλ‘ μ μΈλλ λ³μμ μ묡μ μΌλ‘ ν λΉλλ κ° |
μμ νμ | null νμ | κ°μ΄ μλ€λ κ²μ μλμ μΌλ‘ λͺ μν λ μ¬μ©νλ κ° |
μμ νμ | μ¬λ²(symbol) νμ | ES6μμ μΆκ°λ 7λ²μ§Έ νμ |
μμ νμ | BigInt νμ | κΈΈμ΄μ μ μ½ μμ΄ μ μλ₯Ό λ€λ£° μ μκ² ν΄μ£Όλ μ«μν |
κ°μ²΄ νμ | κ°μ²΄, ν¨μ, λ°°μ΄ λ± |
2) μ¬λ² νμ
μ΄λ
- ES6μμ μΆκ°λ 7λ²μ§Έ νμ μΌλ‘, λ³κ²½ λΆκ°λ₯ν μμ νμ μ κ°
- μ¬λ² κ°μ λ€λ₯Έ κ°κ³Ό μ€λ³΅λμ§ μλ μ μΌλ¬΄μ΄ν κ°μ. λ°λΌμ μ£Όλ‘ μλ¦μ΄ μΆ©λν μνμ΄ μλ κ°ν μ μ μΌν νλ‘νΌν° ν€λ₯Ό λ§λ€κΈ° μν΄ μ¬μ©ν¨
// μ, μλ, μΌμͺ½, μ€λ₯Έμͺ½μ λνλ΄λ μμλ₯Ό μ μνλ€.
// μ€λ³΅λ κ°λ₯μ±μ΄ μλ μ¬λ² κ°μΌλ‘ μμ κ°μ μμ±νλ€.
const Direction = {
UP: Symbol('up'),
DOWN: Symbol('down'),
LEFT: Symbol('left'),
RIGHT: Symbol('right'),
};
const myDirection = Direction.UP;
if (myDirection === Direction.UP) {
console.log('You are going UP.');
}
3) λ°μ΄ν° νμ
μ΄ νμν μ΄μ
- κ°μ μ μ₯ν λ ν보ν΄μΌ νλ λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ₯Ό κ²°μ νκΈ° μν΄
- κ°μ μ°Έμ‘°ν λ ν λ²μ μ½μ΄ λ€μ¬μΌ ν λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ₯Ό κ²°μ νκΈ° μν΄
- λ©λͺ¨λ¦¬μμ μ½μ΄ λ€μΈ 2μ§μλ₯Ό μ΄λ»κ² ν΄μν μ§ κ²°μ νκΈ° μν΄
2. μ μ νμ΄ν vs. λμ νμ΄ν
1) μ μ νμ΄νμ΄λ
- Cλ μλ° κ°μ μ μ νμ μΈμ΄λ λ³μλ₯Ό μ μΈν λ λ³μμ ν λΉν μ μλ κ°μ μ’ λ₯, μ¦ λ°μ΄ν° νμ μ μ¬μ μ μ μΈν΄μΌ ν¨.(μ΄λ₯Ό λͺ μμ νμ μ μΈμ΄λΌκ³ ν¨)
- λ€μμ Cμμ μ μ νμ μ λ³μλ₯Ό μ μΈνλ μμμ ↓
// c λ³μμλ 1λ°μ΄νΈ μ μ νμ
μ κ°(-128 ~ 127)λ§μ ν λΉν μ μλ€.
char c;
// num λ³μμλ 4λ°μ΄νΈ μ μ νμ
μ κ°(-2,124,483,648 ~ 2,124,483,647)λ§μ ν λΉν μ μλ€.
int num;
- μ μ νμ μΈμ΄λ λ³μμ νμ μ λ³κ²½ν μ μμΌλ©°, λ³μμ μ μΈν νμ μ λ§λ κ°λ§ ν λΉν μ μμ.
- μ μ νμ μΈμ΄λ μ»΄νμΌ μμ μμ νμ 체ν¬λ₯Ό μνν¨ (λ§μ½, νμ 체ν¬λ₯Ό ν΅κ³Όνμ§ λͺ»νλ€λ©΄ μλ¬λ₯Ό λ°μμν€κ³ νλ‘κ·Έλ¨μ μ€ν μ체λ₯Ό λ§μ)
- λνμ μΈ μ μ νμ
μΈμ΄λ‘λ C, C++, μλ°, μ½νλ¦°, κ³ , λ¬μ€νΈ λ±μ΄ μμ
2) λμ νμ΄νμ΄λ
- μλ° μ€ν¬λ¦½νΈλ μ μ νμ μΈμ΄μ λ€λ₯΄κ² λ³μλ₯Όμ μΈν λ νμ μ μ μΈνμ§ μκ³ var, let, const ν€μλλ₯Ό μ¬μ©ν΄ λ³μλ₯Ό μ μΈν¨
var foo;
console.log(typeof foo); // undefined
foo = 3;
console.log(typeof foo); // number
foo = null;
console.log(typeof foo); // object
foo = Symbol(); // μ¬λ²
console.log(typeof foo); // symbol
foo = {}; // κ°μ²΄
console.log(typeof foo); // object
foo = []; // λ°°μ΄
console.log(typeof foo); // object
foo = function () {}; // ν¨μ
console.log(typeof foo); // function
- μλ°μ€ν¬λ¦½νΈμ λ³μλ μ μΈμ΄ μλ ν λΉμ μν΄ νμ μ΄ κ²°μ (νμ μΆλ‘ )λ¨
- λν μ¬ν λΉμ μν΄ λ³μμ νμ μ μΈμ λ μ§ λμ μΌλ‘ λ³ν μ μμ(=λμ νμ΄ν)
- λνμ μΈ λμ νμ μΈμ΄λ‘λ μλ°μ€ν¬λ¦½νΈ, νμ΄μ¬, PHP λ±μ΄ μμ
3. νμ λ³ν
1) λͺ μμ νμ λ³ν
- μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ νμ μ΄ μμ. κ°μ νμ μ κ°λ°μμ μλμ λ°λΌ λ€λ₯Έ νμ μΌλ‘ λ³νν μ μλλ°
- κ°λ°μκ° μλμ μΌλ‘ κ°μ νμ μ λ³ννλ κ²μ λͺ μμ νμ λ³ν λλ νμ μΊμ€ν μ΄λΌκ³ ν¨
var x = 10;
// μ«μλ₯Ό λ¬Έμμ΄λ‘ νμ
μΊμ€ν
νλ€.
var str = x.toString();
console.log(typeof str, str); // string 10
// x λ³μμ κ°μ΄ λ³κ²½λ κ²μ μλλ€.
console.log(typeof x, x); // number 10
2) λͺ μμ νμ λ³νμ μ
β λ¬Έμμ΄μ΄ μλ κ° → λ¬Έμμ΄
- String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ²
- Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ²
- λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ²
// 1. String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
String(1); // -> "1"
// 2. Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
(1).toString(); // -> "1"
// 3. λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
1 + ''; // -> "1"
β‘ μ«μ μλ κ° → μ«μ
- Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- parseInt, parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ λ³ν κ°λ₯)
- `+` λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
- `*` μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
// 1. Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
Number('0'); // -> 0
// 2. parseInt, parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ λ³ν κ°λ₯)
parseInt('0'); // -> 0
// 3. + λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
+'0'; // -> 0
// 4. * μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
'0' * 1; // -> 0
β’ λΆλ¦¬μΈ νμ
μλ κ° → λΆλ¦¬μΈ νμ
- Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- ! λΆμ λ
Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
// 1. Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
// λ¬Έμμ΄ νμ
=> λΆλ¦¬μΈ νμ
Boolean('x'); // -> true
Boolean(''); // -> false
Boolean('false'); // -> true
// μ«μ νμ
=> λΆλ¦¬μΈ νμ
Boolean(0); // -> false
Boolean(1); // -> true
Boolean(NaN); // -> false
Boolean(Infinity); // -> true
// null νμ
=> λΆλ¦¬μΈ νμ
Boolean(null); // -> false
// undefined νμ
=> λΆλ¦¬μΈ νμ
Boolean(undefined); // -> false
// κ°μ²΄ νμ
=> λΆλ¦¬μΈ νμ
Boolean({}); // -> true
Boolean([]); // -> true
// 2. ! λΆμ λ
Όλ¦¬ μ°μ°μλ₯Ό λλ² μ¬μ©νλ λ°©λ²
// λ¬Έμμ΄ νμ
=> λΆλ¦¬μΈ νμ
!!'x'; // -> true
!!''; // -> false
!!'false'; // -> true
// μ«μ νμ
=> λΆλ¦¬μΈ νμ
!!0; // -> false
!!1; // -> true
!!NaN; // -> false
!!Infinity; // -> true
// null νμ
=> λΆλ¦¬μΈ νμ
!!null; // -> false
// undefined νμ
=> λΆλ¦¬μΈ νμ
!!undefined; // -> false
// κ°μ²΄ νμ
=> λΆλ¦¬μΈ νμ
!!{}; // -> true
!![]; // -> true
3) μ묡μ νμ λ³ν
- κ°λ°μμ μλμλ μκ΄μμ΄ ννμμ νκ°νλ λμ€μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ μλ λ³νλλ κ²
var x = 10;
// λ¬Έμμ΄ μ°κ²° μ°μ°μ ( + )λ μ«μ νμ
xμ κ°μ λ°νμΌλ‘ μλ‘μ΄ λ¬Έμμ΄μ μμ±νλ€.
var str = x + '';
console.log(typeof str, str); // string 10
// x λ³μμ κ°μ΄ λ³κ²½λ κ²μ μλλ€.
console.log(typeof x, x); // number 10
Tips. truthy / falsy ν κ°
- μλ°μ€ν¬λ¦½νΈ μμ§μ λΆλ¦¬μΈ νμ μ΄ μλ κ°μ Truthy κ°(μ°ΈμΌλ‘ νκ°λλ κ°) λλ Falsy κ°(κ±°μ§μΌλ‘ νκ°λλ κ°)μΌλ‘ ꡬλΆν¨
- μ¦, μ μ΄λ¬Έμ 쑰건μκ³Ό κ°μ΄ λΆλ¦¬μΈ κ°μΌλ‘ νκ°λμ΄μΌ ν λ¬Έλ§₯μμ Truthy κ°μ trueλ‘, Falsy κ°μ falseλ‘ μ묡μ νμ λ³νλ¨
// falseλ‘ νκ°λλ Falsy κ°
false
undefined
null
0, -0
NaN
' '(λΉ λ¬Έμμ΄)
// Falsy κ°μ ! μ°μ°μλ₯Ό λΆμ΄λ©΄, λͺ¨λ Truthy κ°μΌλ‘ νκ°λμ΄ μ€ν κ°λ₯ν¨
// μλμ 쑰건문μ λͺ¨λ μ½λ λΈλ‘μ μ€νν
if (!false) console.log(false + ' is falsy value');
if (!undefined) console.log(undefined + ' is falsy value');
if (!null) console.log(null + ' is falsy value');
if (!0) console.log(0 + ' is falsy value');
if (!NaN) console.log(NaN + ' is falsy value');
if (!'') console.log('' + ' is falsy value');
'Frontend π > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] μλ³μ, νΈμ΄μ€ν , ν€μλ(var, let, const) etc. (0) | 2024.07.29 |
---|---|
[JS] μλ°μ€ν¬λ¦½νΈλ (0) | 2024.07.06 |
[JS] for...of λͺ λ Ήλ¬Έ (2) | 2023.12.04 |
[JS] parseInt() μ¬μ© λ°©λ² (0) | 2023.11.30 |
[JS] Constructor(μμ±μ)λ? (0) | 2023.11.28 |