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