hi,我又回來了,今天學習一下
const
命令。
聲明一個常量
const
聲明一個只讀常量,一旦聲明,常量的值便不可改變。
例子如下:
const food = 12;
food = 23; // Uncaught TypeError: Assignment to constant variable.
還可以聲明一個變量
const
可以聲明一個變量,聲明以后,必須初始化,否則變錯。
例子如下:
const food; // Uncaught SyntaxError: Missing initializer in const declaration
其他特性
const
和let
有許多相似點:
- 只在其聲明的塊級作用域中有效;
- 不存在作用域提升,是暫時性死區,必須先聲明,后使用;
- 不能重復聲明,否則會報錯
例子如下:
//1.只在其聲明的塊級作用域中有效
{
const food = 'apple';
}
console.log(food); // Uncaught ReferenceError: food is not defined
//2.暫時性死區
{
console.log(HI); // Uncaught ReferenceError: HI is not defined
const HI = 'hello';
}
//3.不能重復聲明
{
const food = 'apple';
const food = 'orange'; // Uncaught SyntaxError: Identifier 'food' has already been declared
}
const的聲明變量的本質
const聲明的變量,並不是說變量的值不能改變,而是對於變量指向那個的內存地址所保存的數據不得改動。
-
如果聲明的變量是基本數據,那值就保存在變量指向的那個內存地址,可以理解為對於常量。
-
但是如果聲明的變量是一個引用數據類型,那只能保證變量保存的指針地址不變,至於變量里面的屬性和值,就不能保證了。
注意:如果把這個聲明的引用數據類型變量指向另一個對象,就會報錯。
例如:
// 常量是一個對象
const About = {};
About.us = 'usb';
About.ua = 'usc';
console.log(About); // {us: "usb", ua: "usc"}
About = {}; // Uncaught TypeError: Assignment to constant variable.
//常量是一個數組
const BALL = [];
BALL.length = 2;
BALL[0] = 'haha';
BALL = []; // Uncaught TypeError: Assignment to constant variable.
補充:聲明變量的方法
- ES5的
var
和function
命令。 - ES6的
let
和const
命令。
最后總結
其實,const也不是很難,只要你細心,就會發現非常的簡單。