1. λ³μλ
- νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° μ체 λλ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν΄ λΆμΈ μ΄λ¦
1) λ³μ μ μΈ
var score;
- λ³μ μ μΈμ΄λ λ³μλ₯Ό μμνλ κ²
- κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ λ³μ μ΄λ¦κ³Ό ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό μ°κ²°ν΄μ κ°μ μ μ₯ν μ μκ² μ€λΉνλ κ²
- λ³μλ₯Ό μ¬μ©νλ €λ©΄ λ°λμ μ μΈμ΄ νμνκ³ , λ³μλ₯Ό μ μΈν λλ var, let, const ν€μλλ₯Ό μ¬μ©ν¨
2. μλ³μλ βοΈ
- μλ³μ(identifier)
- λ³μμ μ΄λ¦, μ΄λ€ κ°μ ꡬλ³ν΄μ μλ³ν μ μλ κ³ μ ν μ΄λ¦, κ°μ΄ μλλΌ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅ν¨
- λ³μμ μ΄λ¦, μ΄λ€ κ°μ ꡬλ³ν΄μ μλ³ν μ μλ κ³ μ ν μ΄λ¦, κ°μ΄ μλλΌ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅ν¨
- μλ³μλΌλ μ©μ΄λ λ³μ μ΄λ¦μλ§ κ΅νν΄μ μ¬μ©νμ§ μμ. (μλ₯Ό λ€μ΄, λ³μ, ν¨μ, ν΄λμ€ λ±μ μ΄λ¦μ λͺ¨λ μλ³μμ)
- μλ³μμΈ λ³μ μ΄λ¦μΌλ‘λ λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ λ³μ κ°μ μλ³ν μ μκ³ , ν¨μ μ΄λ¦μΌλ‘λ λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ ν¨μλ₯Ό μλ³ν μ μμ
- μ¦, λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ μ΄λ€ κ°μ μλ³ν μ μλ μ΄λ¦μ λͺ¨λ μλ³μλΌκ³ λΆλ¦
1) μλ³μ λ€μ΄λ° κ·μΉ
- μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν λ¬Έμ, μ«μ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)λ₯Ό ν¬ν¨ν μ μμ
- λ¨, μ«μλ‘ μμνλ κ²μ νμ©νμ§ μμ
2) λ€μ΄λ° 컨벀μ μ’ λ₯
// μΉ΄λ© μΌμ΄μ€ (camelCase)
var firstName;
// μ€λ€μ΄ν¬ μΌμ΄μ€ (snake_case)
var first_name;
// νμ€μΉΌ μΌμ΄μ€ (PascalCase)
var FirstName;
// νκ°λ¦¬μΈ μΌμ΄μ€ (typeHungarianCase)
var strFirstName; // type + identifier
var $elem = document.getElementById('myId'); // DOM λ
Έλ
var observable$ = fromEvent(document, 'click'); // RxJS μ΅μ λ²λΈ
3) 리ν°λ΄μ΄λ?
- 리ν°λ΄(literal)μ μ¬λμ΄ μ΄ν΄ν μ μλ λ¬Έμ λλ μ½μλ κΈ°νΈλ₯Ό μ¬μ©ν΄ κ°μ μμ±νλ νκΈ°λ²(=notation)
3. νΈμ΄μ€ν μ΄λ βοΈβοΈ
console.log(score); // undefined;
var score; // λ³μ μ μΈλ¬Έ
- λ³μ νΈμ΄μ€ν
- λ°νμ μ΄μ μ μ€ν 컨ν μ€νΈμ μν΄ μμ€μ½λ νκ° κ³Όμ μμ μ€μ½νμ λ±λ‘λκ³ μ΄λ₯Ό λ§μΉ μ½λμ μ μΌ μμ μλ κ²μ²λΌ λ³μκ° μ΄λμ μμΉνλμ§μ μκ΄μμ΄ μ΄λμλ μ§ λ³μλ₯Ό μ°Έμ‘°ν μ μλ κ²μ²λΌ λ§λλ νΉμ§
- (js μμ§μ λ³μ μ μΈ(μ ν¬ν¨ν λͺ¨λ μ μΈλ¬Έ)μ΄ μμ€ μ½λμ μ΄λμ μλ μκ΄μμ΄ λ€λ₯Έ μ½λλ³΄λ€ λ¨Όμ μ€νν¨)
- μ¬μ€ λ³μ μ μΈλΏλ§ μλλΌ var, let, const, function, function*, class ν€μλλ₯Ό μ¬μ©ν΄μ μ μΈνλ λͺ¨λ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ λ±)λ νΈμ΄μ€ν λ¨.(λͺ¨λ μ μΈλ¬Έμ λ°νμ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έ)
4. var ν€μλλ
- var ν€μλλ λ€μ μ€λ λ³μ μ΄λ¦μ μλ‘μ΄ λ³μλ₯Ό μ μΈν κ²μ μ§μνλ ν€μλμ
- ν€μλλ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό ν΄μνκ³ μ€ννλ, μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μνν λμ μ κ·μ ν μΌμ’ μ λͺ λ Ήμ΄ (μλ°μ€ν¬λ¦½νΈ μμ§μ ν€μλλ₯Ό λ§λλ©΄ μμ μ΄ μνν΄μΌ ν μ½μλ λμμ μνν¨)
- μλ₯Ό λ€μ΄, var ν€μλλ₯Ό λ§λλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ λ€μ μ€λ λ³μ μ΄λ¦μΌλ‘ μλ‘μ΄ λ³μλ₯Ό μ μΈ
- λ³μλ₯Ό μ μΈν μ΄ν, μμ§ λ³μμ κ°μ ν λΉνμ§ μμμ§λ§ ν보λ λ©λͺ¨λ¦¬ 곡κ°μλ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ undefinedλΌλ κ°μ΄ μ묡μ μΌλ‘ ν λΉλμ΄ μ΄κΈ°νλ¨
1) var ν€μλ λ¬Έμ μ βοΈ
β λ³μ μ€λ³΅ μ μΈ νμ©
function foo() {
var x = 1;
// var ν€μλλ‘ μ μΈλ λ³μλ κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ νμ©νλ€.
// μλ λ³μ μ μΈλ¬Έμ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ var ν€μλκ° μλ κ²μ²λΌ λμνλ€.
var x = 2;
console.log(x); // 2
}
foo();
- var ν€μλλ‘ μ μΈλ λ³μλ κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ΄ νμ©λλλ°, μ΄λ μλμΉ μκ² λ³μκ°μ΄ μ¬ν λΉλμ΄ λ³κ²½λλ λΆμμ©μ λ°μμν΄
β‘ ν¨μ λ 벨 μ€μ½ν
case 1 : var ν€μλλ‘ λ³μ μ μΈ
var x = 1;
if (true) {
// var ν€μλλ‘ μ μΈλ λ³μλ ν¨μμ μ½λ λΈλ‘(ν¨μ λͺΈμ²΄)λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ€.
// ν¨μ λ°μμ var ν€μλλ‘ μ μΈλ λ³μλ μ½λ λΈλ‘ λ΄μμ μ μΈλμλ€ ν μ§λΌλ λͺ¨λ μ μ λ³μλ€.
// λ°λΌμ xλ μ μ λ³μλ€. μ΄λ―Έ μ μΈλ μ μ λ³μ xκ° μμΌλ―λ‘ x λ³μλ μ€λ³΅ μ μΈλλ€.
// μ΄λ μλμΉ μκ² λ³μ κ°μ΄ λ³κ²½λλ λΆμμ©μ λ°μμν¨λ€.
var x = 10;
}
console.log(x); // 10
case 2 : var ν€μλλ‘ forλ¬Έ μμ λ³μ μ μΈ
var i = 10;
// for λ¬Έμμ μ μΈν iλ μ μ λ³μλ€. μ΄λ―Έ μ μΈλ μ μ λ³μ iκ° μμΌλ―λ‘ μ€λ³΅ μ μΈλλ€.
for (var i = 0; i < 5; i++) {
console.log(i); // 0 1 2 3 4
}
// μλμΉ μκ² λ³μμ κ°μ΄ λ³κ²½λμλ€.
console.log(i); // 5
- λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄λ ν¨μ λͺΈμ²΄λ§μ΄ μλλΌ λͺ¨λ μ½λ λΈλ‘(if, for, while, try/catch λ±)μ΄ μ§μ μ€μ½νλ₯Ό λ§λ¬. μ΄λ¬ν νΉμ±μ λΈλ‘ λ 벨 μ€μ½νλΌκ³ ν¨.
- νμ§λ§ var ν€μλλ‘ μ μΈλ λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘(ν¨μ λͺΈμ²΄)λ§μ μ§μ μ€μ½νλ‘ μΈμ ν¨(μ΄λ° νΉμ±μ ν¨μ λ 벨 μ€μ½νλΌκ³ ν¨)
β’ λ³μ νΈμ΄μ€ν
console.log(score); // undefined;
var score; // λ³μ μ μΈλ¬Έ
- var ν€μλλ‘ μ μΈλ λ³μλ μ μΈκ³Ό λμμ undefinedλ‘ μ΄κΈ°νλλ©°, λ°νμ μ¦ μμ€μ½λ νμ¬ λ¨κ³μμ μ€μ½νμ λ±λ‘λκΈ° λλ¬Έμ μ€ν λ¨κ³μμ μ€μ κ°μ΄ ν λΉλμ§ μλλΌλ undefindedλ₯Ό κ°μ§
5. let ν€μλλ
- var ν€μλμ λ¨μ μ 보μνκΈ° μν΄ ES6μμ λμ
λ μλ‘μ΄ ν€μλμ
1) let ν€μλ vs. var ν€μλ βοΈβοΈ
β λ³μ μ€λ³΅ μ μΈ κΈμ§
let bar = 123;
// letμ΄λ const ν€μλλ‘ μ μΈλ λ³μλ κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ νμ©νμ§ μλλ€.
let bar = 456; // SyntaxError: Identifier 'bar' has already been declared
- var ν€μλλ‘ μ΄λ¦μ΄ λμΌν λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄ μλ¬΄λ° μλ¬κ° λ°μνμ§ μμ. μ΄λ λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄μ κ°κΉμ§ ν λΉνλ©΄ μλμΉ μκ² λ¨Όμ μ μΈλ λ³μ κ°μ΄ μ¬ν λΉλμ΄ λ³κ²½λλ λΆμμ©μ΄ λ°μν¨.
- νμ§λ§ let ν€μλλ‘ μ΄λ¦μ΄ κ°μ λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄ λ¬Έλ² μλ¬(SyntaxError)κ° λ°μν¨
β‘ λΈλ‘ λ 벨 μ€μ½ν
let foo = 1; // μ μ λ³μ
{
let foo = 2; // μ§μ λ³μ
let bar = 3; // μ§μ λ³μ
}
console.log(foo); // 1
console.log(bar); // ReferenceError: bar is not defined
- let ν€μλλ₯Ό ν΅ν΄ μ μΈλ λ³μλ λΈλ‘ λ 벨 μ€μ½νλ₯Ό λ°λ¦
- ν¨μ λΏλ§ μλλΌ λͺ¨λ μ½λ λΈλ‘ λ΄μ μ μΈλ λ³μ(μ§μ λ³μ)λ ν΄λΉ μ ν¨ λ²μ(μ€μ½ν)λ₯Ό λ²μ΄λλ©΄ μ¬μ©ν μ μμ
β’ λ³μ νΈμ΄μ€ν
βοΈβοΈ
- let ν€μλλ‘ μ μΈν λ³μλ λ³μ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλ κ²μ²λΌ λμν¨
console.log(foo); // Cannot access 'foo' before initialization
let foo;
- var ν€μλμλ€λ©΄ λ³μ νΈμ΄μ€ν μ μν΄ λ°νμ μ΄μ μ λ³μκ° μ μΈλμ΄ undefinedλ₯Ό μΆλ ₯ν΄μΌν¨. νμ§λ§ let ν€μλμμλ μ°Έμ‘°μλ¬κ° λνλ¨
- let ν€μλλ‘ μ μΈν λ³μλ 'μ μΈ λ¨κ³'μ 'μ΄κΈ°ν λ¨κ³'κ° λΆλ¦¬λμ΄ μ§νλ¨.
- μ¦, λ°νμ μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ μ μΈ λ¨κ³κ° λ¨Όμ μ€νλμ§λ§ μ΄κΈ°ν λ¨κ³λ λ³μ μ μΈλ¬Έμ λλ¬νμ λ μ€νλ¨.
- λ§μ½ μ΄κΈ°ν λ¨κ³κ° μ€νλκΈ° μ΄μ μ λ³μμ μ κ·Όνλ €κ³ νλ©΄ μ°Έμ‘° μλ¬κ° λ°μν¨
- let ν€μλλ‘ μ μΈν λ³μλ μ€μ½νμ μμ μ§μ λΆν° μ΄κΈ°ν λ¨κ³ μμ μ§μ (λ³μ μ μΈλ¬Έ)κΉμ§ λ³μλ₯Ό μ°Έμ‘°ν μ μμ.
- μ€μ½νμ μμ μ§μ λΆν° μ΄κΈ°ν μμ μ§μ κΉμ§ λ³μλ₯Ό μ°Έμ‘°ν μ μλ ꡬκ°μ μΌμμ μ¬κ°μ§λ(TDZ: Temporal Dead Zone)λΌ λΆλ¦
// λ°νμ μ΄μ μ μ μΈ λ¨κ³κ° μ€νλλ€. μμ§ λ³μκ° μ΄κΈ°νλμ§ μμλ€.
// μ΄κΈ°ν μ΄μ μ μΌμμ μ¬κ° μ§λμμλ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
console.log(foo); // ReferenceError: foo is not defined
let foo; // λ³μ μ μΈλ¬Έμμ μ΄κΈ°ν λ¨κ³κ° μ€νλλ€.
console.log(foo); // undefined
foo = 1; // ν λΉλ¬Έμμ ν λΉ λ¨κ³κ° μ€νλλ€.
console.log(foo); // 1
β£ μ μ κ°μ²΄μ let
let x = 1;
// let, const ν€μλλ‘ μ μΈν μ μ λ³μλ μ μ κ°μ²΄ windowμ νλ‘νΌν°κ° μλλ€.
console.log(window.x); // undefined
console.log(x); // 1
- let ν€μλλ‘ μ μΈν μ μ λ³μλ μ μ κ°μ²΄μ νλ‘νΌν°κ° μλ(μ¦, window.fooμ κ°μ΄ μ κ·Όν μ μμ)
6. const ν€μλλ
- const ν€μλλ μμ(constant)λ₯Ό μ μΈνκΈ° μν΄ μ¬μ©νμ§λ§, λ°λμ μμλ§μ μν΄ μ¬μ©νμ§λ μμ
- const ν€μλμ νΉμ§μ letκ³Ό λλΆλΆ λμΌ
1) const ν€μλ νΉμ§ βοΈ
β μ μΈκ³Ό μ΄κΈ°ν
const bar = 1;
console.log(bar); >>> 1
const foo;
console.log(foo); >>> // SyntaxError: Missing initializer in const declaration
- const ν€μλλ‘ μ μΈν λ³μλ λ°λμ μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌ ν¨. μκ·ΈλΌ λ¬Έλ² μλ¬(SyntaxError) λ°μ
β‘ μ¬ν λΉ κΈμ§
const foo = 1;
foo = 2; // TypeError: Assignment to constant variable.
- var λλ let ν€μλλ‘ μ μΈν λ³μλ μ¬ν λΉμ΄ μμ λ‘μ°λ const ν€μλλ‘ μ μΈν λ³μλ μ¬ν λΉμ΄ κΈμ§μ
β’ μμ
// μΈμ¨μ μλ―Ένλ 0.1μ λ³κ²½ν μ μλ μμλ‘μ μ¬μ©λ κ°μ΄λ€.
// λ³μ μ΄λ¦μ λλ¬Έμλ‘ μ μΈν΄ μμμμ λͺ
νν λνλΈλ€.
const TAX_RATE = 0.1;
// μΈμ κ°κ²©
let preTaxPrice = 100;
// μΈν κ°κ²©
let afterTaxPrice = preTaxPrice + preTaxPrice * TAX_RATE;
console.log(afterTaxPrice); // 110
- const ν€μλλ‘ μ μΈν λ³μμ μμ κ°μ ν λΉν κ²½μ° λ³μ κ°μ λ³κ²½ν μ μμ
- μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°μ΄λ―λ‘ μ¬ν λΉ μμ΄ κ°μ λ³κ²½ν μ μλ λ°©λ²μ΄ μκΈ° λλ¬Έμ
- μ΄λ¬ν νΉμ§μ μ΄μ©ν΄ const ν€μλλ₯Ό μμλ₯Ό νννλ λ° μ¬μ©
'Frontend π > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] λ°μ΄ν° νμ , νμ λ³ν, λ¨μΆ νκ° etc. (1) | 2024.07.30 |
---|---|
[JS] μλ°μ€ν¬λ¦½νΈλ (0) | 2024.07.06 |
[JS] for...of λͺ λ Ήλ¬Έ (2) | 2023.12.04 |
[JS] parseInt() μ¬μ© λ°©λ² (0) | 2023.11.30 |
[JS] Constructor(μμ±μ)λ? (1) | 2023.11.28 |