[JavaScript_DeepDive] 16. 프로퍼티 어트리뷰트 #내부 슬롯과 내부 메서드 -내부 슬롯과 내부 메서드는 js엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. ECMAScript 사양에 등장하는 이중 대괄호([[...]])로 감싼 이름들이 내부 슬롯과 내부 메서드다. -내부 슬롯과 내부 메서드는 ECMAScript 사양에 정의된 대로 구현되어 js엔진에서 실제로 동작하지만 개발자가 직접 접근할 수 있도록 외부로 공개된 객체의 프로퍼티는 아니다. (일부만 제공하고 나머지는 직접적으로 접근 불가능) const o = {}; //내부 슬롯은 js엔진의 내부 로직이므로 직접 접근할 수 없다. o[[Prototype]]//->Uncaught Synt.. 2022. 3. 20. [JavaScript_DeepDive] 15. let, const 키워드와 블록 레벨 스코프 #var키워드로 선언한 변수의 문제점 1. 변수 중복 선언 허용 -var키워드로 선언한 변수는 중복 선언이 가능하다. -var키워드로 선언한 변수를 중복 선언하면 초기화 문 유무에 따라 다르게 동작한다. 초기화문이 있는 변수 선언문은 js엔진에 의해 var키워드가 없는 것 처럼 동작하고 초기화문이 없는 변수 선언문은 무시된다. 2. 함수 레벨 스코프 -var키워드로 선언한 ㅂ녀수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. -함수 외부에서 var키워드로 선언한 변수는 코드 블록(if문, for문, { } 등) 내에서 선언해도 모두 전역 변수가 된다. -함수레벨 스코프는 전역 변수를 남발할 가능성을 높여서 의도치 않게 전역 변수가 중복 선언되는 경우가 발생한다. 3. 변수 호이스팅 -var키워드.. 2022. 3. 17. [JavaScript_DeepDive] 14. 전역변수의 문제점 전역변수의 무분별한 사용은 위험하다. 전역 변수를 반드시 사용해야 할 이유를 찾지 못한다면 지역변수를 사용해야 한다. #변수의 생명주기 ※지역 변수의 생명주기 -변수는 생성되고 소멸되는 생성주기(life cycle)가 있다. 변수에 생명 주기가 없담녀 한번 선언된 변수는 프로그램을 종료하지 않는 한 여원히 메모리 공간을 점유하게 된다. -전역 변수의 호이스팅으로 알 수 있듯 변수 선언은 어디에 있든 상관 없이 런타임 실행 이전에 js엔진에 의해 먼저 실행된다. 그러나 함수 내부에서 선언한 변수는 함수가 호출된 후에 순차적으로 실행된다. -변수는 자신이 선언된 위치에서 생성되고 소멸한다.(ex.함수 내부에서 호출된 변수-종료시 소멸) -지역변수의 생명주기는 함수의 생명주기와 일치한다. -지역변수가 함수보다.. 2022. 3. 17. [JavaScript_DeepDive] 12. 함수(2) #참조에 의한 전달과 외부 상태의 변경 매개변수는 함수 몸체 내부에서 변수와 동일하게 취급되므로 매개변수 또한 타입에따라 값에 의한 전달, 참조에 의한 전달 방식을 그대로 따른다. //매개변수 primitive는 원시 값을 전달받고, 매개변수 obj는 객체를 전달받는다. function changeVal(primitive, obj){ primitive += 100; obj.name = 'Kim'; } //외부 상태 var num = 100; var person = {name: 'Lee'}; console.log(num);//100 console.log(person);//{name: "Lee"} //원시 값은 값 자체가 복사되어 전달되고 객체는 참조 값이 복사되어 전달된다. changeVal(num, pe.. 2022. 3. 14. 이전 1 2 3 4 5 6 7 다음