목록전체 글 (23)
nhyunzi
18.1 일급 객체무명의 리터럴로 생성할 수 있다. 런타임에 생성 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다.함수는 위의 조건을 모두 만족하기 때문에 일급 객체다.//1. 무명의 리터럴로 생성//2. 변수에 저장할 수 있다.const increase = function(num){ return ++num;};const decrease = function(num){ return --num;}; //2. 객체에 저장할 수 있다. const predicates = { increase, decrease }; //3. 함수의 매개변수에 전달할 수 있다.//4. 함수의 반환값으로 사용할 수 있다.function makeCo..
17.1 Object 생성자 함수생성자 함수란 new 연산자와 함께 호출되어 인스턴스를 생성하는 함수를 말한다. new 연산자와 함께 Objcet 생성자 함수를 호출하며 객체를 생성해 반환한다.만약 new 연산자를 함께 호출하지 않으면 일반 함수로 동작한다.// 빈 객체 생성 const person = new Object(); person.name = 'Ahn';person.sayHello = function(){ console.log('Hi! My name is '+this.name);// Object 말고도 String, Number, Boolean, Function, Array, Date, RegExp, Promise 등의 빌트인 생성자 함수 제공//타입은 전부 objectconst strObj ..
16.5 객체 변경 방지자바스크립트는 객체의 변경을 방지하는 다양한 메서드를 제공한다.각 메서드들은 변경을 금지하는 강도가 다르다.객체 확장 금지Object.preventExtensions는 객체의 추가를 금지한다. 동적 추가와 Object.defineProperty 모두 금지한다. 확장여부는 Object.isExtensible()을 통해 알 수 있다.const person = { name : 'Ahn'}; console.log(Object.isExtensible(person)); //true Object.preventExtensions(person); console.log(Object.isExtensible(person)); //false person.name = 'Kim'console.log(pers..
15.1 var 키워드로 선언한 변수의 문제점ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는것var 키워드로 선언된 변수는 다음과 같은 특징이 있어 주의를 기울이지 않으면 심각한 문제를 발생시킴변수 중복 선언 허용var 키워드로 선언한 변수는 중복 선언이 가능만약 동일한 이름의 변수가 이미 선언되었음을 모르고 변수를 중복 선언하며 값까지 할당한다면 의도하지는 않았지만 먼저 선언된 변수값이 바뀌어 버리는 부작용 생김var x = 1;var y = 1; var x = 100; //초기화 문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는것처럼 동작var y; //초기화 문이 없는 변수 선언문은 무시 console.log(x); //100console.log(y);..
역 변수의 무분별한 사용은 위험하기 때문에 되도록 지역 변수를 사용해야 한다.그렇기 때문에 전역 변수의 문제점과 사용을 억제하는 방법을 이번 장에서 알아보도록한다. 14.1 변수의 생명 주기14.1 변수의 생명 주기변수는 생성되고 소멸되는 생성주기가 있다. 지역 변수의 생명주기지역 변수는 자신이 선언된 함수가 호출되면 생성되고 함수가 종료하면 소멸한다.즉, 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다.function foo(){ var x = 'local'; console.log(x); // local return x;} foo();console.log(x); //ReferenceError: x is not defined 함수 내부에서 선언한 변수는 함수가 호출된 직후 함수 몸체의 코드가 ..
13.1 스코프란?스코프(유효범위)는 모든 프로그래밍 언어의 기본이며 중요한 개념이다. 다른 언어의 스코프와 구별되는 특징이 있으므로 주의가 필요하다. 코드 블록이나 함수는 중첩이 가능하기때문에 변수는 코드 가방 바깥 영역뿐 아니라 함수 몸체 내에서도 선언할 수 있다. 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정며 이를 스코프라 한다. 스코프는 식별자가 유효한 범위를 말한다고 볼 수 있다.var x = 'global'; function foo(){ var x = 'local'; console.log(x); // 'local'} foo(); console.log(x); //'global' 위의 코드를 살펴보면..