코딩/Javascript (19) 썸네일형 리스트형 생성자 함수: 붕어빵 틀 회원, 상품 등 비슷한 객체를 여러번 사용 해야할 때, 붕어빵 틀같은 존재 --> 생성자함수 함수 첫 글자는 대문자로 function User( name, age ){ this. age = age; this. name = name; } let user1 = new User(30,'Jane'); // new로 호출 let user2 = new User(20,'Mike'); let user3 = new User(40,'Tom'); 작동원리 new 함수명 (); 실행하면 function User( name, age){ this = { } // this에 빈 객체를 만들고 this.name = name; // 새로운 프로퍼티를 this에 추가 tihs.age = age; return this; // this가 .. 변수3-var , let , const hoisting: 스코프 내부 어디에서든 변수 선언은 최상위에 선언 된 것처럼 행동 let, const도 호이스팅이 된다 그럼에도 불구하고 변수 선언 및 할당보다 먼저 참조를 하면 var와 같이 undefined가 찍히지않고 에러가 나는이유는? -->TDZ (Temporal Dead Zone) 때문에 호이스팅은 스코프단위로 이루어진다. 변수의 생성과정 1.선언 단계 2.초기화 단계 3.할당 단계 var 1.선언과 초기화단계(undefined 할당) 2.할당 단계 let 1.선언단계 2.초기화단계 3.할당단계 호이스팅되면서 선언단계가 이루어지지만, 초기화 단계는 실제 코드에 도달했을 때 이루어지기 때문에 참조를 먼저하면(변수선언,할당보다 먼저 하면) 레퍼런스에러가난다. const 1.선언 + 초기화 + 할.. 데이터타입 자바스크립트엔진은 데이터 타입, 즉 값의 종류에 따라 정해진 크기의 메모리공간을 확보한다. 자바스크립트 ES6의 7개 데이터타입 구분 데이터타입 원시타입 숫자타입 문자열타입 불리언타입 undefiend 타입 null 타입(값이 없다는것을 의도적으로 명시할 때 ) symbol타입 객체타입 객체,함수,배열등 +심벌 이외의 원시값은 리터럴을 통해 생성하지만 심벌은 symbol함수 호출하여 생성한다. 이때 생성된 심벌 값은 외부에 노출되지 않으며 다른 값과 절대 중복되지 않은 유일무이한 값 데이터타입에 따라 확보되는 메모리공간의 크기 숫자 2와 문자열 2는 값을 생성한 용도와 목적이다르며 확보해야할 메모리 공간의 크기도 다르고 메모리에 저장되는 2진수도 달라 읽어 들여 해석하는 방식도 다르다 값을 참조하는 경우.. 카멜케이스와 파스칼케이스 일반적으로 변수나 함수의 이름에는 카멜케이스를 사용하고, 생성자함수, 클래스이름에는 파스칼 케이스를 사용한다. //카멜케이스 camelCase var firstName; //파스칼케이스 PascalCase var FristName 변수1-값의 할당, 재할당 var score //변수선언 score - 90; //값의 할당 var score = 80; //변수선언과 값의 할당 변수선언과 값의 할당을 2개의문으로 나누어 표현한 코드와 (위) 변수선언과 값의 할당을 하나의 문으로 단축한 표현한 코드는 정확히 동일하게 동작한다. (아래) 자바스크립트엔진은 변수선언과 값의할당을 하나의 문으로 단축 표현해도 변수 선언과 값의 할당을 2개의 문으로 나누어 각각 실행한다. 재할당 var 키워드로 선언한 변수는 선언과 동시에 undefined로 초기화되기 때문이 엄밀히 말하자면 변수에 처음으로 값을 가지는 것도 재할당이다. 재할당은 변수에 저장된 값을 다른 값으로 변경한다. 그래서 변수이다. 값을 재할당 할 수 없어서 변수에 저장된 값을 변경할 수 없다면 변수가 아닌 상수.. 변수2- 변수 선언의 실행시점과 변수 호이스팅 console.log(score); //undefined var score // 변수선언문 변수선언문보다 변수를 참조하는 코드가 앞에 있다. 자바스크립트 코드는 인터프리터에 의해 한 줄씩 순차적으로 실행되므로 첫줄에서 변수를 선언하기 전이기 때문에 참조에러 ReferenceError가 발생할 것처럼 보이지만 undefined가 출력된다. 이유는 변수 선언이 소스코드가 한줄씩 실행되는 시점 , 즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다. 자바스크립트엔진은 소스코드를 한 줄씩 순차적으로 실행하기 앞서 소스코드의 평가과정을 거치면서 소스코드를 실행하기위한 준비를한다. 준비단계인 소스코드 평가과정에서 자바스크립트 엔진은 모든 선언문(변수선언문, 함수선언문 등)을 소스코드에 찾아서 먼저 실행한다.. 변수의 이름은 어디에 등록되는가 변수이름을 비롯한 모든 식별자는 실행 컨텍스트 excution context 에 등록된다. 실행 컨텍스트는 자바스크립트 엔진이 소스코드를 평가하고 실행하기 위해 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역이다. 자바스크립트 엔진은 실행 컨텍스트를 통해 식별자와 스코프를 관리한다. 변수이름과 변수 값은 실행 컨텍스트 내에 키/값 형식인 객체로 등록되어 관리된다. 초기화란 initalization 일반적으로 초기화란 변수가 선언된 이후 최초로 값을 할당하는 것을 말한다. var키워드로 선언한 변수는 undefined로 암묵적인 초기화가 자동수행된다. 만약 초기화 단계를 거치지 않으면 확보된 메모리 공간에는 이전에 다른 애플리이션이 사용했던 값이 남아있을 수 있다. 이러한 값을 쓰레기 값 garbage value이라고한다. +undefined는 자바스크립트에서 제공하는 원시의 값이다. primitive value 이전 1 2 3 다음