1강 

ecma는 자바스크립트의 코어 스크립트언어. 연산자 조건문 이딴거


2강let const

원시형에서 변수는 let

상수는 const


-var 재할당 가능


-let 동일한 변수에 두번 선언 불가


let name = 'boy';

let name = 'girl'; 

=> 불가


-재할당 가능

let name = 'boy';

name = 'girl'; 

=>가능


let name;

console.log(name)

=> undefined


-const 동일한 변수에 두번선언은 당연히 안되고

재할당도 안됨.

const name = 'boy';

name = 'girl'; 

=>불가


단, const가 참조형 자료를 담고있을 경우 프로퍼티는 재할당 가능

const name = {

 boy1:'james',

 boy2:'chrals'

}


name.boy1 = 'daseul'



const name

=>선언과 동시에 값할당하지 않으면 실행초자안됨



3강 block scope

-block-sockpe : {}로 감싸진 변수의 유효범위

-기존의 var는 function scope레벨 호이스팅

-let키워드를 사용해 변수의 유효범위를 블록스코프처리



호이스팅이란 var let function등 모든 선언문이 최상단으로 끌어올려지는 것

함수표현식 함수선언식

var num = 1;

function printNum(){

console.log('first:'+num);

var num=2;

console.log('second:'+num);

}

printNum();


=>first:undefined second:2



===============호이스팅된 경우

var num;

function printNum(){

  var num;

console.log('first:'+num);

num=2;

console.log('second:'+num);

}

num = 1;

printNum();




var pruduct = 'phone';

if(true){

var product ='tv';

console.log(product);

}

console.log(product);


=> tv tv

===============호이스팅된 경우

var pruduct';

pruduct = 'phone';

if(true){

var product;

        product='tv';

console.log(product);

}

console.log(product);








let pruduct = 'phone';

if(true){

let product ='tv';

console.log(product);

}

console.log(product);


=>tv phone


함수스코브 :var let const어떤 걸로 선언하든 선언한 함수내부에서 선언한 것은 함수내부에서만 사용가능

var let const


블록스코프:블록 내부에서 let const로 선언한 것만 블록 내부에서 사용가능



4강 temporal dead zone


let은 var와 달리 변수가 초기화 되기 전에 접근하면 undefined가 아닌 레퍼런스에러가 발생한다.

var는 선언과 동시에 undefined로 자동으로 초기화 되지만

let의 경우 선언은 되지만 초기화는 되지 않는다. 처음으로 호이스팅된 변수에 값을 집어넣는 순간 초기화가 된다.


let product = 'phone';

if(true){

let product;//호이스팅으로 인해 변수 product에 대한 TDZ 시작 

console.log(product);

let product ='tv';//product에 대한 TDZ 끝

}

console.log(product);

=>error


=====================================

var products = 'phone';

if(true){

console.log(product);

var product ='tv';

}

console.log(product);

=>undefined tv


정리

원시형 변수는 let, 상수는 const

참조형은 const





+ Recent posts