자바스크립트(JavaScript)는 웹 개발의 핵심 언어로, ES5(ECMAScript 5)와
ES6(ECMAScript 2015) 이후부터는 문법적·기능적 발전이 크게
이루어졌습니다.
이 글에서는 기본부터 전문가 수준까지 꼭 알아야 할 자바스크립트의
핵심 개념과 테크닉을 정리합니다.
var
ES5까지 사용되던 변수 선언 키워드. 함수 스코프(function scope)를
가짐.
var x = 10;
function test() {
var y = 20;
console.log(x, y); // 10, 20
}호이스팅(Hoisting): var로 선언된 변수는 선언부가 함수 맨 위로
끌어올려지는 것처럼 동작.
string, number, boolean, null,
undefinedobject, array, functionvar str = "Hello"; // string
var num = 42; // number
var arr = [1,2,3]; // array (object)
var fn = function() { return "함수"; };함수 선언식과 함수 표현식
// 선언식 (호이스팅 O)
function add(a, b) {
return a + b;
}
// 표현식 (호이스팅 X)
var multiply = function(a, b) {
return a * b;
};this 키워드 (ES5)
window (브라우저) 또는 global (Node.js)var obj = {
name: "JS",
getName: function() {
return this.name;
}
};
console.log(obj.getName()); // "JS"forEach, map, filter, reducevar nums = [1,2,3,4];
var doubled = nums.map(function(n){ return n*2; }); // [2,4,6,8]
var sum = nums.reduce(function(acc, cur){ return acc+cur; }, 0); // 10let: 블록 스코프(block scope), 재할당 가능const: 상수, 재할당 불가 (참조형은 값 변경 가능)let a = 1;
const b = {x:1};
b.x = 2; // 가능this 바인딩이 정적(lexical scope)으로 결정됨const add = (a, b) => a + b;const arr = [1,2];
const [x,y] = arr; // x=1, y=2
const obj = {name:"JS", age:10};
const {name, age} = obj;let name = "JS";
console.log(`Hello, ${name}!`); // "Hello, JS!"class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, I'm ${this.name}`;
}
}// util.js
export function sum(a,b){ return a+b; }
// main.js
import {sum} from './util.js';함수가 선언될 때의 환경(스코프)을 기억하여 외부 함수의 변수를 참조.
function counter() {
var count = 0;
return function() {
count++;
return count;
}
}
var c = counter();
console.log(c()); // 1
console.log(c()); // 2function Animal(name) {
this.name = name;
}
Animal.prototype.say = function() {
console.log("Hi, I'm " + this.name);
};
var dog = new Animal("Dog");
dog.say(); // Hi, I'm DogsetTimeout(function() {
console.log("done");
}, 1000);new Promise((resolve) => {
setTimeout(()=> resolve("done"), 1000);
}).then(console.log);async function run() {
let result = await new Promise(r => setTimeout(()=>r("done"),1000));
console.log(result);
}_(언더스코어) 활용 예시:
_count(value, _index) => { ... }_ (예: Lodash)///* ... *//**
* 두 수를 더합니다.
* @param {number} a
* @param {number} b
* @returns {number}
*/
function add(a, b){ return a+b; }const arr = [1,2,3];
const doubled = arr.map(x=>x*2); // 순수 함수var Singleton = (function(){
var instance;
function createInstance(){
return {name:"single"};
}
return {
getInstance: function(){
if(!instance) instance = createInstance();
return instance;
}
};
})();자바스크립트는 ES5의 기초 개념을 잘 이해하는 것이 중요하며, 이후
ES6 이상의 최신 문법과 **심화 개념(클로저, 프로토타입, 이벤트 루프
등)**을 이해해야 실무에서 진정한 전문가로 성장할 수 있습니다.
이번 글에서 다룬 개념들을 기반으로 프로젝트에 직접 적용해보며 자신만의
테크닉으로 발전시키는 것을 권장합니다.
