Baseline Widely available
const
声æç¨äºå£°æåä½ç¨åçå±é¨åéã常éçå¼ä¸è½éè¿ä½¿ç¨èµå¼è¿ç®ç¬¦éæ°èµå¼æ¥æ´æ¹ï¼ä½æ¯å¦æå¸¸éæ¯ä¸ä¸ªå¯¹è±¡ï¼å®ç屿§å¯ä»¥è¢«æ·»å ãæ´æ°æå é¤ã
const number = 42;
try {
number = 99;
} catch (err) {
console.log(err);
// Expected output: TypeError: invalid assignment to const 'number'
// (Note: the exact output may be browser-dependent)
}
console.log(number);
// Expected output: 42
è¯æ³
const name1 = value1;
const name1 = value1, name2 = value2;
const name1 = value1, name2 = value2, /* â¦, */ nameN = valueN;
nameN
è¦å£°æçåéçåç§°ãæ¯ä¸ªåéåç§°å¿ é¡»æ¯åæ³ç JavaScript æ è¯ç¬¦æè§£æç»å®æ¨¡å¼ã
valueN
åéçåå§å¼ãå®å¯ä»¥æ¯ä»»ä½åæ³ç表达å¼ã
const
声æä¸ let
é常ç¸ä¼¼ï¼
const
声æçä½ç¨åæ¢å¯ä»¥æ¯å级ä½ç¨åï¼ä¹å¯ä»¥æ¯å½æ°ä½ç¨åã
const
声æåªæå¨å£°æçä½ç½®ä¹åæè½è®¿é®ï¼åè§ææ¶æ§æ»åºï¼ãå æ¤ï¼const
声æé常被è§ä¸ºéæåçå£°ææ¹å¼ã
å½å¨èæ¬çé¡¶å±å£°ææ¶ï¼const
声æä¸ä¼å¨ globalThis
ä¸åå»ºå±æ§ã
å¨åä¸ä½ç¨åä¸ï¼const
声æä¸è½è¢«ä»»ä½å
¶ä»å£°æéæ°å£°æã
const
æ¯å£°æè䏿¯è¯å¥ãè¿æå³çä½ ä¸è½å°åç¬ç const
声æç¨ä½åç主ä½ï¼è¿æ¯åççï¼å ä¸ºæ æ³è®¿é®åéï¼ã
if (true) const a = 1; // SyntaxError: Lexical declaration cannot appear in a single-statement context
ä¸ä¸ªå¸¸ééè¦ä¸ä¸ªåå§å¼ãä½ å¿ é¡»å¨å£°æåæ¶æå®å®çå¼ãï¼è¿æ¯åççï¼å 为å®å¨å£°æåä¸è½è¢«æ¹åãï¼
const FOO; // SyntaxError: Missing initializer in const declaration
const
声æå建äºä¸ä¸ªå¯¹å¼çä¸å¯åå¼ç¨ãå®å¹¶ä¸æå³ç宿ææç弿¯ä¸å¯åçï¼åªæ¯åéæ è¯ç¬¦ä¸è½è¢«éæ°èµå¼ãä¾å¦ï¼å¨å
容æ¯å¯¹è±¡çæ
åµä¸ï¼è¿æå³ç对象çå
容ï¼ä¾å¦å±æ§ï¼æ¯å¯ä»¥è¢«ä¿®æ¹çãä½ åºè¯¥å° const
声æç解为âå建ä¸ä¸ªèº«ä»½ä¿æä¸åâçæ è¯ç¬¦ï¼åéï¼ï¼è䏿¯âä¿æå¼ä¸åçæ è¯ç¬¦âââæ¢è¨ä¹ï¼æ¯âå建ä¸å¯åçç»å®âï¼è䏿¯âä¸å¯åçå¼âã
许å¤ä»£ç 飿 ¼æåï¼å
æ¬ MDN çæå建议å½åéå¨å
¶ä½ç¨åä¸ä¸ä¼éæ°èµå¼æ¶ä½¿ç¨ const
è䏿¯ let
ãè¿æ ·å¯ä»¥æ¸
æ°å°è¡¨è¾¾åéçç±»åï¼æå¼ï¼å¦ææ¯åå§ç±»åçæ
åµä¸ï¼æ°¸è¿ä¸ä¼æ¹åçæå¾ã对éåå§å¼å¯è½æ¹åçæ
åµä¸å
¶ä»äººå¯è½æ´åæ¬¢ä½¿ç¨ let
ã
ç´§è·å¨ const
å
³é®ååé¢çå表被称为ç»å®å表ï¼ç¨éå·åéï¼å
¶ä¸éå·ä¸æ¯éå·è¿ç®ç¬¦ï¼=
符å·ä¸æ¯èµå¼è¿ç®ç¬¦ãåé¢åéçåå§å¼å¯ä»¥å¼ç¨å¤å¨å表åé¢çåéã
常éå¨å£°æçæ¶åå¯ä»¥ä½¿ç¨å¤§å°åï¼ä½é常æ åµä¸å ¨é¨ç¨å¤§å忝ï¼ç¹å«æ¯å¯¹äºåå§å¼ï¼å 为å®ä»¬ç¡®å®æ¯ä¸å¯åçã
// å®ä¹å¸¸é MY_FAV å¹¶èµå¼ä¸º 7
const MY_FAV = 7;
console.log(`ææåæ¬¢çæ°åæ¯ï¼${MY_FAV}`);
// 对常éåééæ°èµå¼ä¼å¼åé误
MY_FAV = 20; // TypeError: Assignment to constant variable
// 鿰声æå¸¸éä¼å¼åé误
const MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
var MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
let MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
å级ä½ç¨å
请å¡å¿ 注æåä½ç¨åçç¹æ§ã
const MY_FAV = 7;
if (MY_FAV === 7) {
// 没æé®é¢ï¼å 为å®å¨æ°çå级ä½ç¨åä¸
const MY_FAV = 20;
console.log(MY_FAV); // 20
// var 声æçèå´ä¸éäºåï¼å æ¤ä¼å¼åé误
var MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
}
console.log(MY_FAV); // 7
å®ä¹å¯¹è±¡åæ°ç»å¸¸é
const
ä¹éç¨äºå¯¹è±¡åæ°ç»ãå°è¯è¦ç该对象ä¼å¼åé误âAssignment to constant variableâã
const MY_OBJECT = { key: "å¼" };
MY_OBJECT = { OTHER_KEY: "å¼" };
ç¶èï¼å¯¹è±¡çé®ä¸åä¿æ¤ï¼å æ¤ä»¥ä¸è¯å¥å¯ä»¥æ£å¸¸æ§è¡ã
MY_OBJECT.key = "å
¶ä»å¼";
ä½ å¯è½éè¦ä½¿ç¨ Object.freeze()
æ¥ä½¿å¯¹è±¡ä¸å¯åã
è¿å¯¹æ°æ®åæ ·éç¨ãå°è¯è¦ç该æ°ç»ä¼å¼åé误âAssignment to constant variableâã
const MY_ARRAY = [];
MY_ARRAY = ["B"];
åæ ·å°ï¼æ°ç»çå ç´ ä¸åä¿æ¤ï¼å æ¤ä»¥ä¸è¯å¥å¯ä»¥æ£å¸¸æ§è¡ã
MY_ARRAY.push("A"); // ["A"]
带解æç声æ
æ¯ä¸ª =
åé¢ç左侧ä¹å¯ä»¥æ¯ç»å®æ¨¡å¼ãè¿å
è®¸ä¸æ¬¡å建å¤ä¸ªåéã
const result = /(a+)(b+)(c+)/.exec("aaabcc");
const [, a, b, c] = result;
console.log(a, b, c); // "aaa" "b" "cc"
æå ³æ´å¤ä¿¡æ¯ï¼è¯·åé è§£æã
è§è æµè§å¨å ¼å®¹æ§ åè§RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4