본문 바로가기

자바스크립트-스터디[2021-10-05~완료]

(36)
17 생성자 함수에 의한 객체 생 어라라 왜 VegasTracker는 함수인데 object로 타입오브가 뜨는거지?? 그건 생성자 함수를 사용해서 그렇다! 정규식 만들기 this 는 달라진다 함수 호출 방식 this 가 가리키는 값 일반 함수로서 호출 전역 객체 메서드로서 호출 메서드를 호출한 객체 생성자 함수로서 호출 생성자 함수가 미래에 생성할 인스턴스 내부 메서드 [[Call]] 을 갖는 함수 객체 --> callable : 호출 할 수 있는 객체, 함수, 내부 메서드 [[Construct]]를 갖는 함수 객체 --> constructor : 생성자 함수, 호출 할 수 있는 함수 non-constructor : 객체를 생성자 함수로 호출 할 수 없는 함수. 5) 콘스트럭톨, 논-콘스트럭톨 constructor : 함수 선언문, 함수 ..
16 프로퍼티 어트리뷰트 16.1 내부 슬롯과 내부 메서드 internal slot 내부 슬롯 internal method 내부 메서드 pseudo property 의사 프로퍼티 pseudo method 의사 메서드 내부 슬롯, 내부 메서드는 자바스크립트 엔진에서 실제로 동작한다. 개발자가 직접 접근 할 수 없다. 모든 객체는 [[Prototype]] 내부 슬롯 갖는다 [[Prototype]] 를 .__proto__ 를 통해 간접 접근 가능 const o = { }; o.[[Prototype]] // 에러 발생 o.__proto__ // Object.prototype 16.2 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 자바스크립트 엔진 프로퍼티 생성 --> 프로퍼티의 상태 : 프로퍼티 어트리뷰트 ----> 자동 정의 한다. ..
[4주차] 15장 let, const 키워드와 블록 레벨 스코프 15.1 var 키워드 선언 변수 문제점 es5 변수 선언 -> var 키워드 특징 1. 변수 중복 선언 허용: 정신없다고 2. 함수 레벨 스코프 : 적용안됨, 걍 다 전역 스코프됨 var 선언 ---> 함수 코드 블록 : 지역 스코프 함수 외부 : var a =20; / 함수 코드 블록 : var a =10; // var a는 전역변수, 함수내부에서 선언했지만.. 3. 변수 호이스팅 var 키워드로 변수를 선언하면 변수 호이스팅일 일어나서 스코프의 선두로 끌어올려진다. 변수 선언문 이전 --> 참조 가능, 할당문 이전 --> 참조 undefined 15.2 let 키워드 es6에서 새로운 변수 선언 키워드 let, const 도입함 1. 변수 중복 선언 금지 sysntax 에러 발생함 2. 블록 레벨 ..
13 스코프 스코프 == 유효범위 == 블록 == 식별자 유효범위 모든 식별자(변수, 함수, 클래스 등)는 자신이 선언된 위치에 의해 다른 코드가 자신을 참조할 수 있는 유효 범위를 결정한다. 즉 유효 범위에 따라 식별자 이름이 동일해도 다른 폴더이다. 13.2 스코프의 종류 전역 global : 어디서든 사용 가능 지역 local : 자신의 지역 스코프, 하위 지역 스코프에서 유효함. 아래로.. 사용가능, 위로 사용 못함 13.3 스코프 체인 함수의 중첩: 함수 안에 함수가 정의됨 스코프 체인: 전역 > outer 지역 스코프 >inner 지역 스코프 : 스코프가 계층적으로 연결된 것. 변수가 선언 실행 -> 변수 식별자가 렉시컬 환경에 키로 등록 -> 변수 할당 -> 변수 식별자에 값을 변경 1. 스코프 체인에 ..
[3주차] 14장 전역 변수의 문제점 전역 변수 사용은 위험하다. 지역 변수를 사용해라. 14.1 변수의 생명 주기 1. 지역 변수 생명 주기 생성 : 변수 선언 할당 : 값을 가짐 소멸 : 생명 주기, 자신이 등록된 스코프가 소멸(메모리 해제)될 때까지 유효 메모리 공간은 누구도 참조하지 않을 때 가비지 콜렉터에 의해 해제되어 가용 메모리 풀에 반환 됨. 지역 변수는 foo 함수가 호출 전까지 생성되지 않는다. foo(); 호출되어야 지역 변수가 생성된다. 전역변수에 적용되는 것: 호이스팅 런타임 이전 단계, 자바스크립트 엔진에 의해서 변수 선언은 먼저 실행된다. 호이스팅: 스코프 단위로 동작한다. 2. 전역 변수 생명 주기 전역 코드 함수 명시적 호출이 없어도 실행됨. 더 이상 실행할 문이 없을 때 종료. var 키워드로 선언한 전역 변..
13 렉시컬 스코프 렉시컬 스코프 동적 스코프 동적 스코프: 함수를 어디서 호출했는지. 함수의 상위 스코프 결정 렉시컬 스코프(정적 스코프): 함수를 어디서 정의했는지. 함수의 상위 스코프 결정 자바스크립트는 렉시컬 스코프를 따른다.
12 함수 팀장님이 sdk 안보고 치라고 했는데 몇 개 못쓰고 포기했다. 막상 빈 백지에 쓰라고 하니까 기억도 안나고(뭐 부터 해야했더라?, 자바스크립트에서 생성자는 어떻게 선언했었지, 함수는 어떻게 부르더라?라는 온갖 생각이 그제서야 들었음) 그래서 sdk를 외우려고 다시 스크립트를 확인하고 있다. 전에는 따라치기만 했는데 몇 개가 갑자기 눈에 띄기 시작했다. 1) 나는 생성자 선언을 var vegasTracker = function() {}으로 했는데, 생성자 선언? class 선언은 어떻게 하는거지? 2) 자바스크립트에서 함수 선언 어떻게 하더라? 여러방법이 있는 듯 3) vegasTracker 함수 안에 getParameter 라는 함수가 있네? 함수 안에 함수가 오네?? 12.1 함수란 입력을 받아 출력을..
9장 타입 변환과 단축 평가 9.1 타입 변환이란? 자바스크립트의 모든 값은 타입이 있다. 개발자가 의도를 가지고 타입을 변환하는 것 == 명시적 타입 변환 explicit coercion == 타입 캐스팅 type casting 개발자의 의도 상관없이 타입이 변환되는 것 == 암묵적 타입 변환 implicit coercion == 타입 강제 변환 type coercion 9.2 암묵적 타입 변환 위에처럼 쓰면 암묵적 타입변환이 일어나서 에러가 발생한다고 한다. (자바스크립트 엔진이 지멋대로 바꿔버린다 내의도랑 상관없이) 1) 문자열 타입으로 변환 한 개라도 문자열 변수가 있으면 + 연산자 ==> 문자열 연결 연산자 로 동작한다. 2) 숫자 타입으로 변환 3) 불리언 타입으로 변환 if문에 넣어라 true 로 평가되는 것 : ret..