
JavaScript는 웹 브라우저에서 동작하는 대표적인 프로그래밍 언어입니다.
웹 개발을 할 때 브라우저의 개발자 도구(DevTools)를 활용하면 디버깅과 코드 분석이 가능합니다.
F12 또는 Ctrl + Shift + I (Mac: Cmd + Opt + I)를 눌러 개발자 도구 열기Console 탭에서 JavaScript 코드 실행 가능Elements 탭에서 HTML 요소 확인 및 수정 가능Network 탭에서 네트워크 요청 확인 가능디버깅은 코드의 오류를 찾아 수정하는 과정입니다. 개발자 도구의 Console과 Sources 탭을 활용할 수 있습니다.
console.log(value);를 활용하여 값을 출력debugger; 키워드를 사용하여 코드 실행 중단 후 확인Breakpoints 기능을 활용하여 특정 코드에서 중단 후 상태 확인setTimeout, fetch API, Promise, async/await 활용 가능JavaScript는 1995년 Netscape의 브렌던 아이크(Brendan Eich)에 의해 개발되었으며, 이후 ECMAScript(ES)라는 표준이 정해졌습니다.
strict mode, JSON, Array.prototype.map 등의 기능 추가let, const, arrow function, class, Promise, module 등의 기능 추가async/await, optional chaining, nullish coalescing 등 지속적인 업데이트var x = 10; // 함수 스코프, 중복 선언 가능
let y = 20; // 블록 스코프, 중복 선언 불가능
const z = 30; // 블록 스코프, 재할당 불가능
변수와 함수 선언이 코드 실행 전에 메모리에 저장되는 현상입니다.
console.log(a); // undefined (호이스팅 발생)
var a = 5;
let과 const는 호이스팅되지만, TDZ(Temporal Dead Zone)로 인해 선언 전에 접근하면 오류 발생!
10, 3.14, Infinity, NaNBigInt(12345678901234567890n)'Hello', "World"true, false{ name: 'Alice', age: 25 }[1, 2, 3]function() {}JavaScript는 동적 타입(Dynamically Typed) 언어이므로, 변수의 자료형이 실행 중 변경될 수 있습니다.
let value = 10; // Number
value = "Hello"; // String
value = true; // Boolean
이러한 특징 때문에, 데이터 타입을 다룰 때 주의가 필요합니다.
let a = 10;
let b = 3;
console.log(a + b); // 13 (덧셈)
console.log(a - b); // 7 (뺄셈)
console.log(a * b); // 30 (곱셈)
console.log(a / b); // 3.33 (나눗셈)
console.log(a % b); // 1 (나머지)
console.log(5 == '5'); // true (값만 비교)
console.log(5 === '5'); // false (자료형까지 비교)
function greet(name) {
return `Hello, ${name}!`;
}
console.log(greet("Alice"));
const greet = function(name) {
return `Hello, ${name}!`;
};
const greet = (name) => `Hello, ${name}!`;
JavaScript의 함수는 일급 객체이므로, 변수에 할당하거나 매개변수로 전달할 수 있습니다.
function execute(func) {
func();
}
execute(() => console.log("Hello World!"));
(function() {
console.log("즉시 실행!");
})();
function process(callback) {
console.log("Processing...");
callback();
}
process(() => console.log("Done!"));
function factorial(n) {
if (n === 1) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // 120