1. 程式人生 > 實用技巧 >ES6-----宣告變數

ES6-----宣告變數

以前定義變數

var a="7";

之前作用域: 全域性或者函式內;

1 var a="9";
2 function fn(){
3   console.log(a)
4   var a="5"
5 }
6 fn()

這個結果是undefined

以為函式內有一個變數也為a,則區域性變數起作用,有可能有的人會說,var a="5"在console.log(a)下面啊,還沒有初始化區域性變數a啊,但是var生明變數有提升的作用,上面的程式碼等同於

var  a="9";

function fn(){
   var a;
   console.log(a)
   a="5"
}

fn();

宣告會提前,所以結果才是undefined;

現在ES6 宣告變數 let,const;

(1) let 宣告變數

let a=5

具有塊級作用域

{

這裡面宣告的變數只在這裡有效

}

例子:

if(true){
  var a="5";
   let b="6";
}
console.log(a);//結果為5
console.log(b);//報錯b未定義

塊級作用域有:

if(){}

for(){}

while(){}

let a="9";
function fn(){
  console.log(a)
   let a="5"
}
 fn()

這個結果是報錯,原因是,如果塊級內有變數的定義,則一定會有塊級中的那個變數,但是let沒有提升功能,所以是報錯,而不是undefined

如果塊級內沒有這個變數,就以外面父輩的塊級中定義的為主