JS中const、var和let區別


在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM