Const ng JavaScript
ECMAScript 2015
ES2015 ay nagdala ng dalawang mahalagang bagong keyword ng JavaScript:let
at const
.
通过 const
Ang variable na tinukoy let
Ang variable na tinukoy ay katulad ng variable, ngunit hindi maaaring muling i-assign:
实例
const PI = 3.141592653589793; PI = 3.14; // Ay magiging mali din PI = PI + 10; // Ay magiging mali din
block scope
sablock scopesa loob const
Ang variable na idineklara let
Ang variable ay katulad.
Sa kasong ito, ang x ay idineklara sa loob ng block, iba sa x na idineklara sa labas ng block:
实例
var x = 10; // Dito, ang x ay 10 { const x = 6; // Dito, ang x ay 6 } // Dito, ang x ay 10
Sa nakaraang kabanata Let ng JavaScript Natutunan ko ang higit pang kaalaman tungkol sa block scope sa sekondarya.
sa panahon ng pagdeklara
JavaScript const
Ang variable ay dapat magkaroon ng halaga sa panahon ng pagdeklara:
Hindi tama
const PI; PI = 3.14159265359;
Tama
const PI = 3.14159265359;
Hindi tunay na constant
Katawan const
Mayroong maliwanag na pagiging mali.
Wala siyang tinukoy ang halaga ng constant. Tinukoy niya ang isang constant na pagkilala sa halaga.
Kaya hindi kami maaaring baguhin ang orihinal na halaga ng constant, ngunit maaari naming baguhin ang mga katangian ng object na constant.
Orihinal na halaga
Kung nagbibigay kami ng isang orihinal na halaga sa constant, hindi na kami maaaring baguhin ang orihinal na halaga:
实例
const PI = 3.141592653589793; PI = 3.14; // Ay magiging mali din PI = PI + 10; // Ay magiging mali din
Maaari baguhin ang object na constant:
Maaari mong baguhin ang mga katangian ng object na constant:
实例
// Maaari mong lumikha ng object na const: const car = {type:"porsche", model:"911", color:"Black"}; // Maaari mong baguhin ang mga katangian: car.color = "White"; // 您可以添加属性: car.owner = "Bill";
但是您无法重新为常量对象赋值:
实例
const car = {type:"porsche", model:"911", color:"Black"}; car = {type:"Volvo", model:"XC60", color:"White"}; // ERROR
常量数组可以更改
您可以更改常量数组的元素:
实例
// 您可以创建常量数组: const cars = ["Audi", "BMW", "porsche"]; // 您可以更改元素: cars[0] = "Honda"; // 您可以添加元素: cars.push("Volvo");
但是您无法重新为常量数组赋值:
实例
const cars = ["Audi", "BMW", "porsche"]; cars = ["Honda", "Toyota", "Volvo"]; // ERROR
浏览器支持
Internet Explorer 10 或更早版本不支持 const
关键词。
下表定义了第一个完全支持 const 关键词的浏览器版本:
Chrome 49 | IE / Edge 11 | Firefox 36 | Safari 10 | Opera 36 |
2016 年 3 月 | 2013 年 10 月 | 2015 年 2 月 | 2016 年 9 月 | 2016 年 3 月 |
重新声明
在程序中的任何位置都允许重新声明 JavaScript var
变量:
实例
var x = 2; // 允许 var x = 3; // 允许 x = 4; // 允许
在同一作用域或块中,不允许将已有的 var
或 let
变量重新声明或重新赋值给 const
:
实例
var x = 2; // 允许 const x = 2; // 不允许 { let x = 2; // 允许 const x = 2; // 不允许 }
在同一作用域或块中,为已有的 const 变量重新声明声明或赋值是不允许的:
实例
const x = 2; // 允许 const x = 3; // 不允许 x = 3; // 不允许 var x = 3; // 不允许 let x = 3; // 不允许 { const x = 2; // 允许 const x = 3; // 不允许 x = 3; // 不允许 var x = 3; // 不允许 let x = 3; // 不允许 }
在另外的作用域或块中重新声明 const
是允许的:
实例
const x = 2; // 允许 { const x = 3; // 允许 } { const x = 4; // 允许 }
提升
通过 var
定义的变量会被提升到顶端。如果您不了解什么是提升(Hoisting),请学习提升这一章。
您可以在声明 var 变量之前就使用它:
实例
carName = "Volvo"; // 您可以在此处使用 carName var carName;
通过 const
定义的变量不会被提升到顶端。
const
变量不能在声明之前使用:
实例
carName = "Volvo"; // 您不可以在此处使用 carName const carName = "Volvo";