JavaScript 數組 Const
ECMAScript 2015 (ES6)
2015 年,JavaScript 引入了一個重要的新關鍵字:const
。
使用 const
聲明數組已成為一種常見做法:
實例
const cars = ["Saab", "Volvo", "BMW"];
無法重新賦值
用 const
聲明的數組不能重新賦值:
實例
const cars = ["Saab", "Volvo", "BMW"]; cars = ["Toyota", "Volvo", "Audi"]; // ERROR
數組不是常量
關鍵字 const
有一定誤導性。
它不定義常量數組。它定義的是對數組的常量引用。
因此,我們仍然可以更改常量數組的元素。
元素可以重新賦值
您可以更改常量數組的元素:
實例
// 您可以創建常量數組: const cars = ["Saab", "Volvo", "BMW"]; // 您可以更改元素: cars[0] = "Toyota"; // 您可以添加元素: cars.push("Audi");
瀏覽器支持
Internet Explorer 10 或更早的版本不支持 const
關鍵字。
下表注明了完全支持 const 關鍵字的首個瀏覽器版本:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
2016 年 3 月 | 2013 年 10 月 | 2015 年 2 月 | 2016 年 9 月 | 2016 年 3 月 |
聲明時賦值
JavaScript const
變量在聲明時必須賦值:
意思是:用 const
聲明的數組必須在聲明時進行初始化。
使用 const
而不初始化數組是一個語法錯誤:
實例
不起作用:
const cars; cars = ["Saab", "Volvo", "BMW"];
用 var
聲明的數組可以隨時初始化。
您甚至可以在聲明之前使用該數組:
實例
沒問題:
cars = ["Saab", "Volvo", "BMW"]; var cars;
const 塊作用域
用 const
聲明的數組具有塊作用域。
在塊中聲明的數組與在塊外聲明的數組不同:
實例
const cars = ["Saab", "Volvo", "BMW"]; // 此處 cars[0] 為 "Saab" { const cars = ["Toyota", "Volvo", "BMW"]; // 此處 cars[0] 為 "Toyota" } // 此處 cars[0] 為 "Saab"
用 var
聲明的數組沒有塊作用域:
實例
var cars = ["Saab", "Volvo", "BMW"]; // 此處 cars[0] 為 "Saab" { var cars = ["Toyota", "Volvo", "BMW"]; // 此處 cars[0] 為 "Toyota" } // 此處 cars[0] 為 "Toyota"
您可以在以下章節中學習更多關于塊作用域的內容:JavaScript 作用域。
重新聲明數組
在程序中的任何位置都允許用 var
重新聲明數組:
實例
var cars = ["Volvo", "BMW"]; // 允許 var cars = ["Toyota", "BMW"]; // 允許 cars = ["Volvo", "Saab"]; // 允許
不允許在同一作用域或同一塊中將數組重新聲明或重新賦值給 const
:
實例
var cars = ["Volvo", "BMW"]; // 允許 const cars = ["Volvo", "BMW"]; // 不允許 { var cars = ["Volvo", "BMW"]; // 允許 const cars = ["Volvo", "BMW"]; // 不允許 }
不允許在同一作用域或同一塊中重新聲明或重新賦值現有的 const
數組:
實例
const cars = ["Volvo", "BMW"]; // 允許 const cars = ["Volvo", "BMW"]; // 不允許 var cars = ["Volvo", "BMW"]; // 不允許 cars = ["Volvo", "BMW"]; // 不允許 { const cars = ["Volvo", "BMW"]; // 允許 const cars = ["Volvo", "BMW"]; // 不允許 var cars = ["Volvo", "BMW"]; // 不允許 cars = ["Volvo", "BMW"]; // 不允許 }
允許在另一個作用域或另一個塊中使用 const
重新聲明數組:
實例
const cars = ["Volvo", "BMW"]; // 允許 { const cars = ["Volvo", "BMW"]; // 允許 } { const cars = ["Volvo", "BMW"]; // 允許 }