ES6-----宣告變數
阿新 • • 發佈:2020-07-26
以前定義變數
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
如果塊級內沒有這個變數,就以外面父輩的塊級中定義的為主