ã°ã«ã¼ãåæ¼ç®å ( )
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
ã°ã«ã¼ãåæ¼ç®å ( ) ã¯ãå¼ã§ã®è©ä¾¡ã®åªå
é ä½ãå¶å¾¡ãã¾ããã¾ããç¹å®ã®æ§ææ§é ã«ããã¦ãææ§æ§ãæ§æã¨ã©ã¼ãçºçããå¯è½æ§ãããå ´åã«ãä»»æã®å¼ãæ ¼ç´ããå½¹å²ãæããã¾ãã
試ãã¦ã¿ã¾ããã
console.log(1 + 2 * 3); // 1 + 6
// äºæ³ãããçµæ: 7
console.log(1 + 2 * 3); // 1 + 6
// äºæ³ãããçµæ: 7
console.log((1 + 2) * 3); // 3 * 3
// äºæ³ãããçµæ: 9
console.log(1 * 3 + 2 * 3); // 3 + 6
// äºæ³ãããçµæ: 9
æ§æ
(å¼)
弿°
expression-
è©ä¾¡ãããããããå¼ã§ãã«ã³ãåºåãå¼ãå«ã¾ãã¾ãã
解説
ã°ã«ã¼ãåæ¼ç®åã¯ãå¼ãæ¬å¼§ã§å²ã¿ããã®å 容ãã°ã«ã¼ãåãããã®ã§ãããã®æ¼ç®åã¯éå¸¸ã®æ¼ç®åã®åªå é ä½ã䏿¸ããã¾ããããã«ãããåªå é ä½ãä½ãæ¼ç®åï¼ã«ã³ãæ¼ç®åã¨åç¨åº¦ã«ä½ããã®ï¼ããåªå é ä½ã®é«ãæ¼ç®åãããå ã«è©ä¾¡ãããã¨ãã§ããããã«ãªãã¾ãã
ä¾
>ã°ã«ã¼ãåæ¼ç®åã®ä½¿ç¨
å ç®ã¨æ¸ç®ããä¹ç®ã¨é¤ç®ã®åã«è©ä¾¡ãã¾ãã
const a = 1;
const b = 2;
const c = 3;
// æ¢å®ã®åªå
度
a + b * c; // 7
// æ¢å®ã§ã¯ãããã¨åæ§ã«è©ä¾¡ããã
a + (b * c); // 7
// åªå
é ä½ã夿´ãããä¹ç®ã®åã«å ç®ãè¡ãããããã«ãªã
(a + b) * c; // 9
// ããã¯æ¬¡ã®ãã®ã¨ç価
a * c + b * c; // 9
ãããã®ä¾ã§ã¯ãè©ä¾¡ã®å·¦ããå³ã¸ã®é åºãç¶æããã¦ãããã¨ã«æ³¨æãã¦ãã ãããã¤ã¾ããæ¼ç®åã®è©ä¾¡é åºã¯å¤ãã£ã¦ãã¾ããããªãã©ã³ãã®è©ä¾¡é åºã¯å¤ãã£ã¦ãã¾ãããä¾ãã°ããã®ã³ã¼ãã§ã¯ã颿°å¼ã³åºã a()ãb()ãããã³ c() ã¯ãæ¼ç®åã®åªå
é ä½ãèæ
®ãããåã«ãå·¦ããå³ã¸ï¼é常ã®è©ä¾¡é åºã§ï¼è©ä¾¡ããã¾ãã
a() * (b() + c());
颿° a ã¯é¢æ° b ã®åã«å¼ã³åºããã颿° b ã¯é¢æ° c ã®åã«å¼ã³åºããã¾ããæ¼ç®åã®åªå
é ä½ã«é¢ãã詳細ã¯ããªãã¡ã¬ã³ã¹ãã¼ã¸ãã覧ãã ããã
ã°ã«ã¼ãåæ¼ç®åã使ç¨ãã¦æ§æè§£æã®ææ§æ§ãè§£æ¶ãã
弿ã¯ããã¼ã¯ã¼ã function ã§å§ãããã¨ã¯ã§ãã¾ããããã¼ãµã¼ã¯ããã颿°å®£è¨ã®éå§ã¨è¦ãªããããæ¬¡ã® IIFE ã®æ§æã¯ç¡å¹ã¨ãªãã¾ãã
function () {
// code
}();
ã°ã«ã¼ãåæ¼ç®åã使ç¨ã§ãããã¨ã§ãããã«ããææ§ããè§£æ¶ã§ãã¾ãããã¼ãµã¼ãå·¦æ¬å¼§ãæ¤åºããã¨ããã®å¾ã«ç¶ããã®ã宣è¨ã§ã¯ãªãå¼ã§ããå¿ è¦ãããã¨èªèããããã§ãã
(function () {
// code
})();
ææ§ããè§£æ¶ãããããvoid æ¼ç®åã使ç¨ãããã¨ãå¯è½ã§ãã
ã¢ãã¼é¢æ° ã®å¼æ¬ä½ï¼return ãã¼ã¯ã¼ãã使ç¨ããã«ç´æ¥å¼ãè¿ããã®ï¼ã§ã¯ãã°ã«ã¼ãåæ¼ç®åã使ç¨ãã¦ãªãã¸ã§ã¯ããªãã©ã«å¼ãè¿ããã¨ãã§ãã¾ããããã¯ãã°ã«ã¼ãåæ¼ç®åã使ç¨ããªãå ´åã左䏿¬å¼§ã颿°æ¬ä½ã®éå§ã¨è§£éããã¦ãã¾ãããã§ãã
const f = () => ({ a: 1 });
æ°å¤ãªãã©ã«ä¸ã§ããããã£ã«ã¢ã¯ã»ã¹ããå ´åãããããã£ã¢ã¯ã»ãµã¼ã®ãããè¨å· . ã¯ãæ°å¤èªä½ã«å°æ°ç¹ãå«ã¾ãã¦ããªãéãããã®ç¹ã¨æ··åãããå¯è½æ§ãããã¾ããæ´æ°ãªãã©ã«ãæ¬å¼§ã§å²ããã¨ã§ããã®ææ§ããè§£æ¶ãããã¨ãã§ãã¾ãã
(1).toString(); // "1"
ã°ã«ã¼ãåæ¼ç®åã¨èªåã»ãã³ãã³æ¿å ¥
ã°ã«ã¼ãåæ¼ç®åã¯ãèªåã»ãã³ãã³æ¿å
¥ (ASI) ã«ããåé¡ç¹ã軽æ¸ãããã¨ãã§ãã¾ããä¾ãã°ãreturn ãã¼ã¯ã¼ãã¨è¿ãããå¼ã®éã«ã¯æ¹è¡ãåå¨ãã¦ã¯ãªãã¾ããã
function sum(a, b) {
return
a + b;
}
ãã®ã³ã¼ãã¯undefinedãè¿ãã¾ãããªããªããreturnãã¼ã¯ã¼ãã®ç´å¾ã«ã»ãã³ãã³ãæ¿å
¥ãããããã颿°ãa + bãè©ä¾¡ããã«å³åº§ã«çµäºãã¦ãã¾ãããã§ããè¿ãããå¼ãé·ããé©åãªæ¸å¼åãç¶æãããå ´åã«ã¯ãã°ã«ã¼ãåæ¼ç®åã使ç¨ãã¦returnãã¼ã¯ã¼ãã®å¾ã«å¼ãç¶ããã¨ãæç¤ºããã»ãã³ãã³ã®æ¿å
¥ãé²ããã¨ãã§ãã¾ãã
function sum(a, b) {
return (
a + b
);
}
ããããªãããã°ã«ã¼ãå㯠ASI ã®å±éºæ§ãå¼ãèµ·ããå¯è½æ§ãããã¾ããè¡ãå·¦æ¬å¼§ã§å§ã¾ãããã®åã®è¡ãå¼ã§çµãã£ã¦ããå ´åããã¼ãµã¼ã¯æ¹è¡åã«ã»ãã³ãã³ãæ¿å ¥ãã¾ãããããã¯é¢æ°å¼ã³åºãã®éä¸ã§ããå¯è½æ§ãããããã§ããä¾ã示ãã¾ãã
const a = 1
(1).toString()
ãã®ã³ã¼ãã¯æ¬¡ã®ããã«æ§æè§£æããã¾ãã
const a = 1(1).toString();
"TypeError: 1 is not a function" ã¨ããã¨ã©ã¼ãçºçãã¾ããã»ãã³ãã³ã使ç¨ããªãã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ãæ¡ç¨ããã¦ããå ´åã§ããè¡ã®å é ã«å·¦æ¬å¼§ãããå ´åã«ã¯ãå¿ ãã»ãã³ãã³ãåç½®ãããã¨ãå¿ããªãã§ãã ããããããã¯ãPrettier ãæ¨æºãå«ãè¤æ°ã®ãã©ã¼ããã¿ã¼ ã¹ã¿ã¤ã«ã¬ã¤ãã§æ¨å¥¨ããã¦ãã¾ãã
const a = 1
;(1).toString()
ASI ã使ã£ã¦ä½æ¥ããéã®è©³ããã¢ããã¤ã¹ã«ã¤ãã¦ã¯ããã®ãªãã¡ã¬ã³ã¹ã®é¨åãã覧ãã ããã
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-grouping-operator > |