ã¤ã³ã¯ãªã¡ã³ãæ¼ç®å (++)
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
ã¤ã³ã¯ãªã¡ã³ãæ¼ç®å (++) ã¯ããªãã©ã³ããã¤ã³ã¯ãªã¡ã³ãï¼1 ãå ç®ï¼ããæ¼ç®åãç½®ããã¦ããå ´ææ¬¡ç¬¬ã§ãã¤ã³ã¯ãªã¡ã³ãã®åã¾ãã¯å¾ã®å¤ãè¿ãã¾ãã
試ãã¦ã¿ã¾ããã
let x = 3;
const y = x++;
console.log(`x:${x}, y:${y}`);
// äºæ³ãããçµæ: "x:4, y:3"
let a = 3;
const b = ++a;
console.log(`a:${a}, b:${b}`);
// äºæ³ãããçµæ: "a:4, b:4"
æ§æ
x++
++x
解説
++ æ¼ç®åã¯ãæ°å¤ã¨é·æ´æ°ã® 2 種é¡ã®ãªãã©ã³ãã«å¯¾ãã¦ãªã¼ãã¼ãã¼ãããã¦ãã¾ããæåã«ãªãã©ã³ããæ°å¤ã®å¤ã«å¤æãããã®åãæ¤æ»ãã¾ãããªãã©ã³ããé·æ´æ°ã«ãªã£ãå ´åãé·æ´æ°ã®ã¤ã³ã¯ãªã¡ã³ããå®è¡ããããã§ãªãå ´åã¯æ°å¤ã®ã¤ã³ã¯ãªã¡ã³ããå®è¡ãã¾ãã
æ¼ç®åããªãã©ã³ãã®å¾ãã«ä»ãã¦å¾ç½®æ¼ç®åã¨ãã¦ä½¿ç¨ããå ´åï¼ä¾ãã° x++ï¼ãã¤ã³ã¯ãªã¡ã³ãæ¼ç®åã¯ã¤ã³ã¯ãªã¡ã³ããè¡ããã¤ã³ã¯ãªã¡ã³ãåã®å¤ãè¿ãã¾ãã
æ¼ç®åããªãã©ã³ãã®åã«ä»ãã¦åç½®æ¼ç®åã¨ãã¦ä½¿ç¨ããå ´åï¼ä¾ãã° ++xï¼ãã¤ã³ã¯ãªã¡ã³ãæ¼ç®åã¯ã¤ã³ã¯ãªã¡ã³ããè¡ããã¤ã³ã¯ãªã¡ã³ãå¾ã®å¤ãè¿ãã¾ãã
ã¤ã³ã¯ãªã¡ã³ãæ¼ç®åã¯ãåç
§ï¼å¤æ°ããªãã¸ã§ã¯ãã®ããããã£ãã¤ã¾ãæå¹ãªä»£å
¥å¯¾è±¡ï¼ã§ãããªãã©ã³ãã«ã®ã¿é©ç¨ãããã¨ãã§ãã¾ãã ++x èªä½ã¯å¤ã¨ãã¦è©ä¾¡ãããåç
§ã§ã¯ãªããããè¤æ°ã®ã¤ã³ã¯ãªã¡ã³ãæ¼ç®åãé£çµãããã¨ã¯ã§ãã¾ããã
++(++x); // SyntaxError: Invalid left-hand side expression in prefix operation
ä¾
>å¾ç½®ã¤ã³ã¯ãªã¡ã³ã
let x = 3;
const y = x++;
// x 㯠4ãy 㯠3
let x2 = 3n;
const y2 = x2++;
// x2 㯠4nãy2 㯠3n
åç½®ã¤ã³ã¯ãªã¡ã³ã
let x = 3;
const y = ++x;
// x 㯠4; y = 4
let x2 = 3n;
const y2 = ++x2;
// x2 㯠4n; y2 㯠4n
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-postfix-increment-operator > |