목록웹언어 공부/JS (47)
코밍이의 하루

15.1 var 키워드로 선언한 변수의 문제점 1. 변수 중복 선언 허용 1) var 키워드로 선언한 변수는 중복 선언이 가능하다. - 만약 동일한 이름의 변수가 이미 선언된 것을 모르고 변수를 중복 선언하는 경우 값이 변하는 부작용이 발생한다. 2. 함수 레벨 스코프 1) var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. - 함수 외부로 선언한 경우 코드 블록 내에 선언해도 모두 전역 변수가 된다. var x = 1; if(1) { var x = 10; } console.log(x); // 10 3. 변수 호이스팅 1) var 키워드로 변수를 선언하는 경우 변수 호이스팅에 의해 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작한다. - 변수 선언문 이전에 참조가능..

14.1 변수의 생명 주기 1. 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다. // 예제1 function foo() { var x = 'local'; console.log(x); // local return x; } foo(); console.log(x); // 참조 오류 // 예제2 var x = 'global'; function foo() { console.log(x); // undefined var x = 'local'; } foo(); console.log(x); // global 1) 호이스팅은 스코프를 단위로 동작한다. * 호이스팅은 변수 선언이 스코프의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 말한다. 2. var 키워드로 선언한 전역 변수의 생명 주기는 전역..

13.1 스코프란? 1. 스코프(scope:유효범위) : 식별자가 유효한 범위, 식별자를 검색할 때 사용하는 규칙 1) 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 2) 식별자 결정 : 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것인지를 결정해야 한다. 3) 자바스크립트 엔진은 코드를 실행할 때 코드의 문맥을 고려하고 코드의 문맥은 렉시컬 환경에서 이뤄진다. *렉시컬 환경 : 코드가 어디서 실행되며 주변에 어떤 코드가 있는지 확인하는 법 var x = 'global'; function foo() { var x = 'local'; console.log(x); // l..

12.1 함수란? function add(x,y) { return x + y; } add(2,5); // 7 1. 함수 : 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 1) 입력을 받아서 출력을 내보낸다. 2) 함수 내부로 입력을 전달받는 변수를 매개변수, 입력을 인수, 출력을 반환값이라 한다. 3) 함수는 값이며 여러 개 존재할 수 있으므로 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있다. 4) 함수는 함수 정의를 통해 생성하고 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시하는 함수 호출을 한다. 이후 코드 블록에 담긴 문들이 일괄적으로 실행되고 반환값을 반환한다. 12.2 함수를 사용하는 이유 1. 함수는 필요할 때 여러 ..

11.1 원시 값 1. 변경 불가능한 값 1) 원시 타입의 값(원시 값)은 변경 불가능한 값으로 한번 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없다. 2) 변경 불가능하다는 것은 변수가 아니라 값에 대한 진술이다. 3) 상수는 재할당이 금지된 변수를 말하며 변경 불가능한 값이랑 동일시하면 안된다. - const 키워드를 사용해 선언한 변수에 할당한 객체는 변경할 수 있기 때문이다. 4) 값의 불변성 : 변수 값을 변경하기 위해 ①원시 값을 재할당하면 ②새로운 메모리 공간을 확보하고 ③재할당한 값을 저장한 후 ④변수가 참조하던 메모리 공간의 주소를 변경한다. 5) 불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없다. 2. 값에 의한 전달 var score =..

10.1 객체란? 1. 자바스크립트는 객체 기반의 프로그래밍 언어이며, 원시 값을 제외한 나머지 모두 객체이다. 1) 원시 값은 변경 불가능한 값이지만 객체 타입의 값인 객체는 변경 가능한 값이다. 2. 객체는 0개 이상의 프로퍼티로 구성된 집합이며 프로퍼티는 키와 값으로 구성된다. 1) 메서드 : 프로퍼티 값이 함수인 것 var counter = { num: 0, // 프로퍼티 increase: function () { // 메서드 this.num++; } }; 10.2 객체 리터럴에 의한 객체 생성 1. 객체 리터럴 : 객체를 생성하기 위한 표기법 1) 중괄호{} 내에 0개 이상의 프로퍼티를 정의한다. 2) 변수에 할당되는 시점에 자바스크립트 엔진은 객체 리터럴을 해석해 객체를 생성한다. 3) 객체 ..