ã¹ã乿¼ç®å (**)
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2017å¹´3æ.
ã¹ã乿¼ç®å (**) ã¯ã1 ã¤ç®ã®ãªãã©ã³ãã 2 ã¤ç®ã®ãªãã©ã³ãã§ç´¯ä¹ããçµæãè¿ãã¾ãããã㯠Math.pow() ã¨åçã§ããããªãã©ã³ãã¨ãã¦é·æ´æ°ãåãå
¥ãã¾ãã
試ãã¦ã¿ã¾ããã
console.log(3 ** 4);
// äºæ³ãããçµæ: 81
console.log(10 ** -2);
// äºæ³ãããçµæ: 0.01
console.log(2 ** (3 ** 2));
// äºæ³ãããçµæ: 512
console.log((2 ** 3) ** 2);
// äºæ³ãããçµæ: 64
æ§æ
x ** y
解説
** æ¼ç®åã¯ãæ°å¤ã¨é·æ´æ°ã® 2 種é¡ã®ãªãã©ã³ãã«å¯¾ãã¦ãªã¼ãã¼ãã¼ãããã¦ãã¾ããã¾ã両ãªãã©ã³ããæ°å¤åã«å¤æãããããã®åãæ¤æ»ãã¾ãã両ãªãã©ã³ããé·æ´æ°ã«ãªã£ãå ´åãé·æ´æ°ã®ã¹ãä¹ãå®è¡ãã¾ããããã§ãªãå ´åã¯æ°å¤ã®ã¹ãä¹ãå®è¡ãã¾ãã䏿¹ã®ãªãã©ã³ããé·æ´æ°ã«ãªãããã䏿¹ãæ°å¤ã«ãªã£ãå ´åã¯ãTypeError ãçºçãã¾ãã
æ°å¤ã¨é·æ´æ°ã®ä¸¡æ¹ã«ããã¦ã 0 ã®æ£ã®ç´¯ä¹ã¯ 0 ãè¿ãã 0 ã® 0 ä¹ã¯ 1 ãè¿ãã¾ããæ°å¤ã®å ´åã 0 ã®è² ã®ç´¯ä¹ã¯ Infinity ãè¿ãã -0 ã®è² ã®ç´¯ä¹ã¯ -Infinity ãè¿ãã¾ãã
NaN ** 0ï¼ããã³åçã® Math.pow(NaN, 0)ï¼ã¯ãæ°å¦æä½ã«ãã㦠NaN ã伿ããªãå¯ä¸ã®ã±ã¼ã¹ã§ãããªãã©ã³ãã NaN ã§ããã«ãããããããçµæã¯ 1 ãè¿ãã¾ããããã«ã base ã 1 ã§ exponent ãéæéæ°ï¼Â±Infinity ã¾ã㯠NaNï¼ã®å ´åã®æå㯠IEEE 754 è¦æ ¼ã¨ç°ãªãã¾ããè¦æ ¼ã§ã¯çµæã 1 ã§ããã¹ãã¨æå®ãã¦ããã®ã«å¯¾ãã JavaScript ã¯å¾æ¹äºææ§ãç¶æãããã NaN ãè¿ãã¾ãã
é·æ´æ°ã®ã¹ãä¹ã§ã¯ãææ° y ãè² ã®å ´å㯠RangeError ãçºçãã¾ãããããã¯ãè² ã®ææ°ã¯ï¼åºã 1ã-1ãã¾ã㯠0 ã§ããå ´åãé¤ãï¼ 0 ãã 1 ã®éã®å¤ã¨ãªãå¯è½æ§ãé«ãã丸ãå¦çã§ 0 ã«å¤æããããããéçºè
ã®ãã¹ã§ããå¯è½æ§ãé«ãããã§ãã
ã¹ã乿¼ç®åã¯å³çµåã§ãã a ** b ** c 㯠a ** (b ** c) ã¨çãããªãã¾ãã
PHP ã Python ãªã©ãã¹ã乿¼ç®å (**) ãæã¤ã»ã¨ãã©ã®è¨èªã§ã¯ãã¹ã乿¼ç®åã¯åé
æ¼ç®åï¼åé
+ ãåé
- ãªã©ï¼ãããåªå
é ä½ãé«ãã¨å®ç¾©ããã¦ãã¾ãããããã¤ãã®ä¾å¤ãããã¾ããä¾ãã°ãBash ã§ã¯ ** æ¼ç®åã¯åé
æ¼ç®åãããåªå
é ä½ãä½ãã¨å®ç¾©ããã¦ãã¾ãã
JavaScript ã§ã¯ãããã¾ããªã¹ãä¹å¼ãè¨è¿°ãããã¨ã¯ã§ãã¾ããã ã¤ã¾ããåºæ°ã®ç´åã«åé
æ¼ç®åï¼åªå
é ä½ 14ã+/-/~/!/++/--/delete/void/typeof/awaitï¼ãç½®ããã¨ã¯ã§ãã¾ããã ãããè¡ãã¨ãSyntaxError ãçºçãã¾ãã
ä¾ãã°ã-2 ** 2 㯠Bash ã§ã¯ 4 ã§ããããã以å¤ã®è¨èªï¼Python ãªã©ï¼ã§ã¯ -4 ã§ãããã㯠JavaScript ã§ã¯æ¼ç®åãææ§ã§ãããããç¡å¹ãªæä½ã§ããæå³ãæç¢ºã«ããã«ã¯ãããããã®è¾ºãæ¬å¼§ã§å²ãå¿
è¦ãããã¾ããä¾ãã° -(2 ** 2) ã®ããã«ãã¾ãã
ãªããä¸é¨ã®ããã°ã©ãã³ã°è¨èªã§ã¯ã¹ãä¹è¨ç®ã«ãã£ã¬ããè¨å· ^ ã使ç¨ãã¦ãã¾ãããJavaScript ã§ã¯ãã®è¨å·ããããæä»çè«çåã«ä½¿ç¨ãã¦ãã¾ãã
ä¾
>åºæ¬çãªã¹ãä¹
2 ** 3; // 8
3 ** 2; // 9
3 ** 2.5; // 15.588457268119896
10 ** -1; // 0.1
2 ** 1024; // Infinity
NaN ** 2; // NaN
NaN ** 0; // 1
1 ** Infinity; // NaN
ãã®ä»ã®é·æ´æ°ä»¥å¤ã®å¤ã¯ãæ°å¤ã«å¤æããã¾ãã
2 ** "3"; // 8
2 ** "hello"; // NaN
é·æ´æ°ã使ç¨ããã¹ãä¹
2n ** 3n; // 8n
2n ** 1024n; // å·¨å¤§ãªæ°å¤ã§ãããã Infinity ã§ã¯ãªã
ã¹ãä¹è¨ç®ã§ã¯ãé·æ´æ°ã¨æ°å¤ã®ãªãã©ã³ããæ··å¨ããããã¨ã¯ã§ãã¾ããã
2n ** 2; // TypeError: Cannot mix BigInt and other types, use explicit conversions
2 ** 2n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
ã¹ãä¹ãé·æ´æ°ã¨é·æ´æ°ä»¥å¤ã®çµã¿åããã§å®è¡ããã«ã¯ãã©ã¡ããã®ãªãã©ã³ãã夿ãã¦ãã ããã
2n ** BigInt(2); // 4n
Number(2n) ** 2; // 4
çµåæ§
2 ** 3 ** 2; // 512
2 ** (3 ** 2); // 512
(2 ** 3) ** 2; // 64
åé æ¼ç®åã¨ã®ä½¿ç¨
ã¹ãä¹å¼ã®çµæã®ç¬¦å·ãå転ãããä¾ã§ãã
-(2 ** 2); // -4
ã¹ãä¹å¼ã®åºåºãå¼·å¶çã«è² ã®æ°ã«ããä¾ã§ãã
(-2) ** 2; // 4
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-exp-operator> |