本文目錄一覽:
- 1、javascript的常量相關問題【const】
- 2、js const 和 var 的區別
- 3、js 的 const聲明常量不是不能修改嗎,為什麼循環裡面可以修改
- 4、var、let、const三者之間的區別和聯繫有哪些?
javascript的常量相關問題【const】
如果你看過,並且明白這倆是啥意思,類比到const就行了。
所謂常量的值就是指基本類型常量,而常量指向的值就是指引用類型常量。
常量的意義當然就是值不可變。基本類型常量的值不可變很容易理解,但是對於引用類型常量,這類常量的值也不可變,但是是計算機意義上的值不可變,它本質上的值記錄的是所引用數據的內存地址。所以對於這類常量而言,const的效果僅限於引用不可變,但是其實際指向的值是可變的。
舉個例子,下面這倆操作,上面是非法的,而下面是合法的:
const obj = {a: 1};
// 非法操作
obj = {a: 2};
// 合法操作
obj.a = 2;
js const 和 var 的區別
const用於定義常量,不可以修改,而且必須初始化。var用於定義變數
js 的 const聲明常量不是不能修改嗎,為什麼循環裡面可以修改
for…in每次循環中的value並不是同一個value,
for(const value in iterable){
console.log(value)
}
相當於每次都用const重新定義了一個新的value存儲iterable中的值,並列印到控制台上;
如果你這樣寫就會報錯,告知你const不可以修改
const value = 1; //const定義常量必須有默認值
for(value in iterable){
}
var、let、const三者之間的區別和聯繫有哪些?
var 是es5之前當然之後也可以這麼寫的寫法!
es5之後又細分出了let(變數)const(常量)這兩種類型。
但是const的出現也表示js腳本開始走向類如java,c#那種重型語言的編寫方式,明確細分了常量和變數。
然後let對比var都是變數(var沒有變數常量一說,但ES5之後其行為與let類似),但是,var和let有很大區別,簡單理解就是作用域變了,如果你學過後端語言的話,你會知道,使用變數需要先聲明在賦值後使用的流程,let繼承了這種流程,而var沒有,在代碼里的體現就是,let只在定義它的上一個大括弧內及其所有子方法體起作用,比如方法中定義let則出了這個方法就沒法使用到這個let,同級別的兩個方法,可以各自定義一個同名let變數。
其實說起來,你可能沒有感覺,因為你用var的時候可能也是這麼用的,但是let是被嚴格約束可以這麼用,而var其實是無約束的,在某些時候是亂竄。也就是你看到的是你想看的,但它裡面的運行不是你所想的!簡單來說,var的作用域是混亂的,同父子作用域下var可以被多次定義。而let不能!
const也是繼承了後端的常量思想,一旦定義,無法被修改,也不能被修改,也不應該被修改,如果你想改變以上3條中的任何一條,都不要使用const!所以const一般用於存儲固定不變的內容,比如系統信息里的名字啊,系統風格啊,審批號啊之類的,不是不能變,而是應該通過人為干預手寫的方式來改變其值,不能不應通過代碼的方式來賦值(初值除外)!
原創文章,作者:ANMXI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325390.html