1.let和var
<1>let聲明的變量僅在塊級作用域內有效;
var聲明的變量在全局有效;
?
<2> var變量樂意在聲明之前使用,輸出undefined;
let 不可以,直接拋出一個錯誤;
?
例如://var 聲明 console.log(a); //undefinedvar a = 55;//let 聲明 console.log(b); //報錯ReferenceError let b = 67;
?
注:for循環的循環變量的那部分是一個父級作用域,而循環體內部是一個單獨的子作用域。
ES6 明確規定,如果區塊中存在let
和const
命令,這個區塊對這些命令聲明的變量,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變量,就會報錯。
<3>let
不允許在相同作用域內,重復聲明同一個變量。
例如:
function func(){ // 報錯var a;let a;}function func(arg) {let arg; // 報錯 }
?
?
2.const
const
聲明一個只讀的常量。一旦聲明,常量的值就不能改變。
const
的作用域與let
命令相同:只在聲明所在的塊級作用域內有效。
?