JavaScript/Deep Dive22 15 let, const 키워드와 블록 레벨 스코프 let중복 선언하면 문법 에러(SyntaxError)let으로 선언한 변수는 모든 코드 블록(함수, if, for, while, try/catch)를 지역 스코프로 인정하는블록 레벨 스코프(block-level scope)를 따른다let foo = 1; // 전역 변수{ let foo = 2; // 지역 변수 let bar = 3; // 지역 변수}console.log(foo); // 1console.log(bar); // ReferenceError var와 다르게 변수 호이스팅이 발생하지 않는 것처럼 동작함console.log(foo); // ReferenceErrorlet foo; 선언 단계와 초기화 단계가 분리되어 진행된다.런타임 이전에 JS 엔진에 의해 암묵적으로 선언 단계가 실행되지만,.. 2024. 9. 23. 14 전역 변수의 문제점 지역 변수의 생명 주기변수는 자신이 선언된 위치에서 생성되고 소멸한다.함수 내부에 선언한 지역변수는 함수가 호출된 직후에 함수 몸체 코드가 실행되기 이전에 먼저 실행됨지역 변수의 생명 주기는 함수의 생명 주기와 일치 변수의 생명 주기는 메모리 확보(allocate)된 시점부터 해제(release)되어 가용 메모리 풀(memory pool)에 반환되는 시점까지다. 지역 변수는 함수가 생성한 스코프에 등록된다.변수는 자신이 등록된 스코프가 소멸(메모리 해제)될 때까지 유효하다.누군가 스코프를 참조하고 있으면, 소멸하지 않고 생존 호이스팅은 변수 선언이 스코프의 선두로 끌어 올려진 것처럼 동작하는 JS 고유의 특징이다var x = 'global';function foo() { console.log(x); .. 2024. 9. 20. 13 스코프 스코프(scope - 유효범위) : 매개변수는 함수 몸체 내부에서만 참조할 수 있다.매개변수를 참조할 수 있는 유효범위, 매개변수의 스코프가 함수 몸체 내부로 한정되어 있기 때문.var var1 = 1; // 코드 가장 바깥 영역에서 선언한 변수if (true) { var var2 = 2; // 코드 블록 내에서 선언한 변수 if (true) { var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수 }}function foo() { var var4 = 4; // 함수 내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 }}console.log(var1); // 1console.log(var2); // 2c.. 2024. 9. 20. 12 함수 함수란?- 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것함수를 사용하는 이유코드의 재사용을 위해유지보수의 편의성을 높임실수를 줄여 코드의 신뢰성을 높임코드의 가독성을 향상 함수 리터럴function 키워드, 함수 이름, 매개변수 목록, 함수 몸체로 구성구성요소설명함수 이름식별자 네이밍 규칙 준수함수 몸체 내에서만 참조할 수 있는 식별자이름 생략 가능. 기명 함수(named function). 무명/익명 함수(anonymous function)매개변수 목록소괄호로 감싸고 쉼표로 구분호출할 때 인수가 순서대로 할당몸체 내에서 변수와 동일하게 취급. 네이밍 규칙 준수함수 몸체호출 시 실행될 문들을 하나의 실행 단위로 정의한 코드 블록함수 호출에 의해 실행.. 2024. 9. 20. 11 원시 값과 객체의 비교 원시 타입과 객체 타입이 다른 세 가지원시 타입의 값은 변경 불가능한 값이다. 이에 비해 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값.원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장.객체를 변수에 할당하면 변수(확보된 메모리 공간) 에는 참조 값이 저장원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달.값에 의한 전달(pass by value)라 한다. 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달됨. 이를 참조에 의한 전달(pass by reference) 라 한다.변수와 값의 차이변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 or 메모리 공간을 식별하기 위해 붙인 이름값 : 변수에 저장된 데이터로서 .. 2024. 9. 18. 10 객체 리터럴 JS는 객체(object) 기반의 프로그래밍 언어이며, 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식) 모두 객체.객체 타입(object/ reference type)은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조(data structure) 이다.또한 객체는 변경 가능한 값(mutable value)이다.객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다var person = { name: 'LEE', // 프로퍼티 age: 20 // 프로퍼티}; 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다.var counter = { num: 0, // 프로퍼티 increase: function () { // 메서드 .. 2024. 9. 18. 이전 1 2 3 4 다음