ES6 - 블록 급 역할 영역 깊이 이해 (let const)

4912 단어 jsES6 깊이 이해
var 성명 및 변수 향상 메커니즘
var 의 성명 향상 메커니즘 - > 함수 역할 영역 이나 전역 역할 영역 에서 키워드 var 를 통 해 설명 하 는 변 수 는 실제 어디서 설명 하 든 현재 역할 영역 (ES5 역할 영역, 함수 만 블록 급 역할 영역 을 할 수 있 는 목적) 상단 에서 설명 하 는 변수 로 간 주 됩 니 다. var 성명 의 변 수 는 window 의 원래 대상 을 덮어 씁 니 다.
var value;
if(true){
    //      
    var value = 1;
}
//       if      
console.log(value);//1;
var Math = 1; //window.Math === Math  true

ES6 블록 급 설명
let 성명
1. let 중복 성명 2. 현재 코드 블록 에 만 작용 합 니 다. 성명 의 변 수 는 window 위의 변 수 를 덮어 쓰 지 않 습 니 다.
if(true){
    let value = 1;
}
console.log(value);//undefined;

let Math = 1; //window.Math === Math  false
/*     :
    iframe        .  let        window  ,
    iframe  ,          var      */

const 성명
const 는 상수 임 을 표시 합 니 다. let 와 마찬가지 로 블록 급 역할 도 메 인 1. const 는 중복 성명 을 할 수 없습니다. 2. 성명 과 동시에 할당 이 필요 합 니 다. 3. 할당 을 중복 할 수 없습니다. 대상 이 라면 대상 의 내용 을 수정 할 수 있 습 니 다. 5. 성명 의 변 수 는 window 위의 변 수 를 덮어 쓰 지 않 습 니 다.
const val; //     ,      
const value = 1;
if(true){
    //         ,let      const
    let value = 1;
}
value = 2; //    ,       

const obj = {};
obj.xx = "xx";//         
obj = 1;//  ,    obj    

임시 사구
let 와 const 성명 의 변수 가 향상 되 지 않 는 효 과 를 설명 합 니 다.
if(true){
    console.log(typeof value);//  :value is not defined
    let value = 'val';
}

순환 중인 성명
    var funcs = [];
    for (var i = 0; i < 10 ; i++) {
        funcs.push(function(){
            console.log(i);
        })
    }
    funcs.forEach(function(v){
        v(); //   10 10,         ,       ,      
    })

    var funcs = [];
    for (let i = 0; i < 10 ; i++) {
        funcs.push(function(){
            console.log(i);
        })
    }
    funcs.forEach(function(v){
        v(); //  0,1,2,3,4,5,6,7,8,9
    })
    //const      ,    ,for(let i=0;i<10;i++)
    //     i   10 ,const           

    for(const key in obj){
        // const      ,    ,    
    } 

좋은 웹페이지 즐겨찾기