반응형
반응형
전역변수 전역변수를 선언한 의도는 코드 어디서든 참조하고 할당할수있는 변수로 사용하겠다는 의미인데 이는 모든코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용하는것이다. 즉 해당 코드가 끝날때까지 생명주기가 이어진다. 또한 스코프 체인상 가장 종점에 위치해있기때문에 검색속도가 가장 느리다. (물론 차이는 그렇게 크진않다) 전역변수의 사용을 억제하는방법 즉시 실행 함수 함수 정의와 동시에 호출되는 즉시실행함수는 한번만 호출된다. 이런특성을 이용해 전역변수의 사용을 제한하는 방법이다. (function () { var foo = 10; // 즉시 실행 함수의 지역 변수 스코프 }()); 네임스페이스 객체 전역에 네임스페이스 역할을 담당할 객체를 생성하고 전역 변수처럼 사용하고싶은 변수를 프로퍼티..
📍13장 스코프 스코프 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 자신을 참조할수이쓴ㄴ 유효 범위가 결정되는데 이를 스코프 라고 한다. 스코프의 종류 전역 스코프 지역스코프 전역스코프 전역스코프는 코드의 가장 바깥 영역을 말한다. 전역에 변수를 선언하면 전연스코프를 갖는 전역변수가 되는데 전역 변수는 어디든지 참조 가 가능하다. 지역스코프 지역은 함수 몸체 내부를 말하는데 지역에서 변수를 선언하면 해당 변수는 지역스코프를 갖게된다. 즉 함수내부에서만 참조할수있다. 스코프 체인 중첩함수에서 스코프는 계층적으로 존재하게되는데 전역 > 함수 > 중첩함수 스코프 가 계층적으로 연결된것을 스코프 체인이라고한다. 변수를 참조할때 자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프에서 시..
📍12장 함수 -2 참조의 의한 전달과 외부 상태의 변경 원시값은 값에 의한 전달 이고 객체는 참조에 의한 전달방식으로 동작한다. 매개변수또한 타입에따라 동일하게 동작하기때문에 매개변수에 원시값을 전달받을때는 값자체가 복사되어 전달되어 함수내부에서 변경을해도 외부원시값을 가지고있는 변수에는 아무런 영향이 없다. 다만 객체를 전달받을때는 참조 값이 전달되기때문에 해당 함수에서 변경하면 외부 객체에도 영향이 간다. function changeVal(primitive, obj) { primitive += 100; obj.name = "kim"; } //외부 값 let num = 100; let person = { name: "Lee" }; console.log(num); // 100 console.log(pe..
함수정의 함수를 정의하는 방법은 4가지 가 있다. 함수 선언문 함수 표현식 function 생정자 함수 화살표 함수 함수선언문 function add (x,y) { return x + y; } 함수 리터럴과 유사하지만 선언문은 함수 이름을 생략할수없고 리터럴은 생략할수있다. 또 함수 선언문은 표현식이 아닌 문으로 변수에 할당할수 없다 하지만 아래코드를 보면 의문점이 생기는데 let add = function add (x,y) { return x + y ; } console.log(add(2,5)); // 7 함수 선언문이 변수에 할당되는것처럼 보이는데 이렇게 동작하는 이유는 자바스크립트 엔진이 코드의 문맥에 따라 함수 리터럴 이나 함수 선언문으로 해석하는 경우가있기때문인데 간단하게 함수리터럴을 단독으로 ..
원시값과 객체? 자바스크립트에는 7가지 데이터 타입이 존재하는데 크게 원시타입 과 객체 타입으로 구분할수있다. 원시타입 변경 불가능한 값 즉 읽기 전용 값 이다. 변수에 실제값이 저장된다. 객체타입 변경 가능한 값 변수에 참조값이 저장된다. 원시값 원시값같은경우는 변경불가능한 값이기때문에 변수값을 재할당하게되면 변수는 새로운 메모리 공간을 확보하고 재할당한 값을 저장한뒤 변수가 참조하던 메모리 공간의 주소를 변경한다. 이런 값의 특성을 불변성 이라고한다. 문자 원시값을 저장하려면 먼저 확보해야하는 메모리 크기를 결정해야되는데 원시 값인 문자열은 1개의 문자는 2바이트의 메모리 공간을 갖고 몇개의 문자로 이뤄진 문자열인지에 따라 메모리 공간이 결정된다. 자바스크립트의 문자열은 원시 타입이며 변경불가능하다 ..
객체 리터럴 자바스크립트는 객체 기반형 프로그래밍 언어이다. 객체 는 0개 이상의 프로퍼티와 메서드로 구성된 집합 이며 프로퍼티 는 객체의 상태를 나타내는 값 이라 하고 키와 값으로 구성된다. 객체 리터럴에 의한 객체 생성 c++이나 자바 같은 클래스 기반 객체 지향 언어는 클래스를 사전에 정의하고 new 연산자와 함께 생성자를 호출해서 인스턴스를 생성하는 방식으로 객체를 생성하지만, 자바스크립트는 프로토타입 기반 객체지향 언어이기때문에 다양한 객체 생성 방법을 지원한다. 객체 리터럴 자바스크립트에서는 일반적으로는 객체 리터럴을 사용해서 객체를 생성하게된다. 객체 리터럴은 중괄호({...}) 사용해 객체 생성을 한다. // 객체 리터럴을 사용해서 객체 생성 let person = { name: '..