React中const是:1、const宣告的變數是不得改變的值;2、const的作用域與let指令相同;3、const指令宣告的常數也是不提升;4、const宣告的常數,也與let一樣不可重複聲明;5、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中文網其他相關文章!