1. 程式人生 > >JS中const、var和let區別

JS中const、var和let區別

方法 pre 命令 con 使用 它的 comm 作用 影響

在JavaScript中有三種聲明變量的方式:var、let、const。

1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。

const b = 2;//正確 // const b;//錯誤,必須初始化 console.log(‘函數外const定義b:‘ + b);//有輸出值 // b = 5; // console.log(‘函數外修改const定義b:‘ + b);//無法輸出 2.var 語句用於聲明變量。 var a; //undefined (如果不初始化,輸出undefined) var a=666; //放到方法外面為全局變量
function fun(){ //var a=555; //放到方法內部為局部變量,只能在fun()內部讀取   console.log(a); //666 } 如果不實用var 關鍵詞,無論放到方法內還是方法外都是全局變量,所以var 會影響變量作用域。 3.let是塊級作用域,函數內部使用let定義後,對函數外部無影響。 ES6新增了let命令,用來聲明變量。它的用法類似於var,但是所聲明的變量,只在let命令所在的代碼塊內有效。即聲明一個局部變量。 以for循環為例: 下面的代碼如果使用var,最後輸出的是10
var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10
上面代碼中,變量ivar聲明的,在全局範圍內都有效。所以每一次循環,新的i值都會覆蓋舊值,導致最後輸出的是最後一輪的i的值。(常見於閉包的考察)
如果使用let,聲明的變量僅在塊級作用域內有效,最後輸出的是6。
var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6

上面代碼中,變量ilet聲明的,當前的i只在本輪循環有效,所以每一次循環的i其實都是一個新的變量,所以最後輸出的是6

JS中const、var和let區別