表达å¼è¯å¥
表达å¼è¯å¥æ¯æå¨éè¦è¯å¥çå°æ¹ä½¿ç¨ç表达å¼ã该表达å¼è¢«æ§è¡åï¼å®çç»æå°è¢«ä¸¢å¼ââå æ¤ï¼å®ä» 对æçå¯ä½ç¨çè¡¨è¾¾å¼ææä¹ï¼ä¾å¦æ§è¡å½æ°æè æ´æ°åéã
è¯æ³
expression;
expression-
è¦è®¡ç®çä»»æè¡¨è¾¾å¼ãæäºè¡¨è¾¾å¼å¯è½ä¸å ¶ä»è¯å¥äº§çæ§ä¹ï¼å æ¤è¢«ç¦ç¨ã
æè¿°
é¤äºä¸ç¨çè¯å¥è¯æ³å¤ï¼ä½ ä¹å¯ä»¥å°å ä¹ä»»ä½è¡¨è¾¾å¼ç¨ä½åç¬çè¯å¥ã表达å¼è¯å¥è¯æ³éè¦å¨è¡¨è¾¾å¼çç»å°¾æ·»å ä¸ä¸ªåå·ï¼ä½æ¯å¦æç¼ºå°åå·å¯¼è´è¯æ³æ æï¼èªå¨åå·è¡¥å ¨çè¿ç¨å¯è½ä¼ä¸ºä½ æå ¥ä¸ä¸ªåå·ã
å ä¸ºè¡¨è¾¾å¼æ§è¡ä¹åå°±ä¼è¢«ä¸¢å¼ï¼è¡¨è¾¾å¼çç»æä¸åå¯ç¨ãå æ¤ï¼è¡¨è¾¾å¼å¿ é¡»æä¸äºå¯ä½ç¨æè½æç¨ã表达å¼è¯å¥é常æ¯ï¼
- 彿°è°ç¨ï¼
console.log("Hello");ã[1, 2, 3].forEach((i) => console.log(i));ï¼ - 带æ ç¾ç模çå符串
- èµå¼è¡¨è¾¾å¼ï¼å æ¬å¤åèµå¼
- èªå¢åèªå
deleteimport()yieldåyield*
å¦æè¡¨è¾¾å¼è°ç¨ getter æè 触å强å¶ç±»å转æ¢ï¼å®ä»¬ä¹å¯è½æå¯ä½ç¨ã
被ç¦ç¨ç表达å¼
为äºå°è¡¨è¾¾å¼ç¨ä½è¯å¥ï¼å®ç¦æ¢ä¸å ¶ä»çè¯å¥è¯æ³ææ§ä¹ãå æ¤ï¼è¡¨è¾¾å¼ç¦æ¢ä»¥ä»¥ä¸ä»»ä½æ è®°å¼å¤´ï¼
functionï¼è¿å°æ¯function声ææèfunction*声æï¼è䏿¯functionè¡¨è¾¾å¼æèfunction*表达å¼async functionï¼è¿å°æ¯async function声ææèasync function*声æï¼è䏿¯async functionè¡¨è¾¾å¼æèasync function*表达å¼classï¼è¿å°æ¯class声æï¼è䏿¯class表达å¼let[ï¼è¿å°æ¯å¸¦ææ°ç»è§£æçlet声æï¼è䏿¯ç§°ä¸ºletåéç屿§è®¿é®å¨ï¼letä» å¯ä»¥æ¯å¨éä¸¥æ ¼æ¨¡å¼ä¸çæ è¯ç¬¦ï¼{ï¼è¿å°æ¯ä¸ä¸ªåè¯å¥ï¼è䏿¯å¯¹è±¡åé¢é
å æ¤ï¼ä»¥ä¸ææå å®¹åæ æï¼
function foo() {
console.log("foo");
}(); // SyntaxError: Unexpected token '('
// åºäºæç§åå ï¼ä½ æä¸ä¸ªå«å `let` çåé
var let = [1, 2, 3];
let[0] = 4; // SyntaxError: Invalid destructuring assignment target
{
foo: 1,
bar: 2, // SyntaxError: Unexpected token ':'
};
æ´å±é©çæ¯ï¼ææ¶å代ç ç¢°å·§æ¯ææçè¯æ³ï¼ä½æ¯è¿å¹¶ä¸æ¯ä½ æ³è¦çã
// åºäºæç§åå ï¼ä½ æä¸ä¸ªå«å `let` çåé
var let = [1, 2, 3];
function setIndex(index, value) {
if (index >= 0) {
// æç®åé
ç»æ°ç» `let`ï¼ä½æ¯å´å建ä¸ä¸ªé¢å¤çåéï¼
let[index] = value;
}
}
setIndex(0, [1, 2]);
console.log(let); // [1, 2, 3]
// è¿å¹¶ä¸æ¯ä¸ä¸ªå¯¹è±¡åé¢éï¼èæ¯ä¸ä¸ªåè¯å¥ã
// å
¶ä¸ `foo` æ¯æ ç¾ï¼`1` æ¯è¡¨è¾¾å¼è¯å¥ã
// è¿é叏卿§å¶å°ä¸åç
{ foo: 1 };
为äºé¿å è¿äºé®é¢ï¼ä½ å¯ä»¥ä½¿ç¨åæ¬å·ï¼ä½¿è¯å¥æç¡®å°ä½ä¸ºä¸ä¸ªè¡¨è¾¾å¼ã
(function foo() {
console.log("foo");
})();
示ä¾
>é¿å æ§å¶æµè¯å¥
ä½ å¯ä»¥ä½¿ç¨è¡¨è¾¾å¼è¯å¥æ¥é¿å
å ä¹æææ§å¶æµè¯å¥ç使ç¨ãä¾å¦ï¼å¯ä»¥ä½¿ç¨ä¸å
è¿ç®ç¬¦åé»è¾è¿ç®ç¬¦æ¿æ¢ if...elseãå for æè
for...of å¯ä»¥ä½¿ç¨æ°ç»æ¹æ³æ¥æ¿æ¢ã
// ä½¿ç¨æ§å¶æµè¯å¥
function range(start, end) {
if (start > end) {
[start, end] = [end, start];
}
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
}
// 使ç¨è¡¨è¾¾å¼è¯å¥
function range2(start, end) {
start > end && ([start, end] = [end, start]);
return Array.from({ length: end - start }, (_, i) => start + i);
}
è¦åï¼è¿ä» æ¼ç¤ºäºè¯¥è¯è¨çåè½ãè¿åº¦ç使ç¨è¡¨è¾¾å¼è¯å¥æ¥æ¿ä»£æ§å¶æµè¯å¥ä¼å¤§å¤§éä½ä»£ç çå¯è¯»æ§ã
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-expression-statement> |