首頁 > web前端 > js教程 > React中const是什麼

React中const是什麼

coldplay.xixi
發布: 2020-11-27 16:25:17
原創
12582 人瀏覽過

React中const是:1、const宣告的變數是不得改變的值;2、const的作用域與let指令相同;3、const指令宣告的常數也是不提升;4、const宣告的常數,也與let一樣不可重複聲明;5、const聲明一個只讀的常數。

React中const是什麼

本教學操作環境:windows7系統、React17版,此方法適用於所有品牌電腦。

React中const是:

1、const宣告一個只讀的常數。一旦聲明,常量的值就不能改變。

const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.
登入後複製

上面程式碼表示改變常數的值會報錯。

2、const宣告的變數是不得改變的值,這意味著,const一旦宣告變量,就必須立即初始化,不能留到以後賦值。

const foo;
// SyntaxError: Missing initializer in const declaration
登入後複製

上面程式碼表示,對於const來說,只宣告不賦值,就會報錯。

3、const的作用域與let指令相同:只在宣告所在的區塊層級作用域內有效。

if (true) {
const MAX = 5;
}
MAX // Uncaught ReferenceError: MAX is not defined
登入後複製

4、const指令宣告的常數也是不提升,同樣存在暫時性死區,只能在宣告的位置後面使用。

if (true) {
console.log(MAX); // ReferenceError
const MAX = 5;
}
登入後複製

上面程式碼在常數MAX宣告之前就調用,結果報錯。

5、const宣告的常數,也與let一樣不可重複宣告。

var message = "Hello!";
let age = 25;
// 以下两行都会报错
const message = "Goodbye!";
const age = 30;
登入後複製

6、對於複合類型的變量,變數名稱不指向數據,而是指向數據所在的位址。 const指令只是保證變數名稱指向的位址不變,不保證該位址的資料不變,所以將一個物件宣告為常數必須非常小心。

const foo = {};
foo.prop = 123;
foo.prop
// 123
foo = {}; // TypeError: "foo" is read-only
登入後複製

上面程式碼中,常數foo儲存的是一個位址,這個位址指向一個物件。不可變的只是這個位址,即不能把foo指向另一個位址,但物件本身是可變的,所以依然可以為其添加新屬性。

下面是另一個例子。

const a = [];
a.push('Hello'); // 可执行
a.length = 0; // 可执行
a = ['Dave']; // 报错
登入後複製

上面程式碼中,常數a是一個數組,這個數組本身是可寫的,但是如果將另一個數組賦值給a,就會報錯。

7、如果真的想將物件凍結,應該使用Object.freeze方法。

const foo = Object.freeze({});
// 常规模式时,下面一行不起作用;
// 严格模式时,该行会报错
foo.prop = 123;
登入後複製

上面程式碼中,常數foo指向一個凍結的對象,所以新增屬性不起作用,嚴格模式時還會報錯。

8、除了將物件本身凍結,物件的屬性也應該凍結。下面是一個將物件徹底凍結的函數。

var constantize = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach( (key, value) => {
if ( typeof obj[key] === 'object' ) {
constantize( obj[key] );
}
});
};
登入後複製

ES5只有兩種宣告變數的方法:var指令和function指令。 ES6除了加入let和const指令,還有另外兩種宣告變數的方法:import指令和class指令。所以,ES6一共有6種宣告變數的方法。

相關免費學習推薦:javascript(影片)

#

以上是React中const是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板