1. 程式人生 > >let與var聲明區別

let與var聲明區別

i++ length div 作用域 () 函數作用域 str FN brush

1、在以往的js中只存在函數作用域而不存在塊級作用域。只在是var聲明的在整個fn中都有效。---導致結果如下

fn(){
     for(var i =0;i<xx.length;i++){   //當聲明 i 後該參數在整個fn中都有效汙染了全局變量 再該方法後就不可再說用 i 
     }
    
      for(let i =0;j<xx.length;j++){ //但如果使用 let 聲明則表示該變量處於塊級作用域 {}  想想 java 不汙染全局變量 也更加規範
     }
}

2、使用let 將會存在暫時性死區 解釋:使用let 聲明的變量,在其聲明前不可使用。規範js

 fn(){
     console.log(a);  //直接報錯 這叫暫時性死區
     let a =5;
}
   fn(){
     console.log(a);  //undefind 不會報錯 只是表示該參數未聲明而已
     var a =5;
}
在ESC6中 新增 coenst 聲明--------向高級編輯語言看齊。final static const 聲明的變量必須聲明同時初始化,且不可改變值,但可以改變屬性。
//例如:
for(){
     const t = [ ]
     t=[1,2];//報錯
     t[0]=1;//可以改變其屬性
}

  

let與var聲明區別