ã«ã³ãæ¼ç®å (,)
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
ã«ã³ãæ¼ç®å (,) ã¯ãããããã®æ¼ç®å¯¾è±¡ãï¼å·¦ããå³ã«ï¼è©ä¾¡ããæå¾ã®ãªãã©ã³ãã®å¤ãè¿ãã¾ããããã¯ãfor ã«ã¼ãã«è¤æ°ã®å¼æ°ãæä¾ããå ´åã«ãã使ç¨ããã¾ãã
試ãã¦ã¿ã¾ããã
let x = 1;
x = (x++, x);
console.log(x);
// äºæ³ãããçµæ: 2
x = (2, 3);
console.log(x);
// äºæ³ãããçµæ: 3
æ§æ
expr1, expr2, expr3/* , ⦠*/
弿°
expr1,expr2,expr3, â¦-
1 ã¤ä»¥ä¸ã®å¼ã§ãè¤åå¼ã®å¤ã¨ãã¦æå¾ã®å¤ãè¿ãã¾ãã
解説
åä¸ã®å¼ãè¦æ±ãããå ´æã«è¤æ°ã®å¼ãè¨è¼ãããå ´åãã«ã³ãæ¼ç®åã使ç¨ãããã¨ãã§ãã¾ãããã®æ¼ç®åã®æãä¸è¬çãªç¨éã¯ã for ã«ã¼ãå
ã§è¤æ°ã®æ´æ°åãæä¾ãããã¨ã§ããåä¸ã®å¼ãè¦æ±ãããå ´æã«è¤æ°ã®æã許å¯ããæ
£ç¨è¡¨ç¾ã¨ãã¦ã¯ã IIFE ã使ç¨ãããã¨ãã§ãã¾ãã
æå¾ã®å¼ãé¤ããã¹ã¦ã®å¼ã¯è©ä¾¡ãããå¾ã§ç ´æ£ãããããããããã®å¼ãæç¨ã§ããããã«ã¯å¯æ¬¡å¹æãå¿
è¦ã§ãã坿¬¡å¹æãæã¤ä¸è¬çãªå¼ã«ã¯ã代å
¥ã颿°å¼ã³åºãã++ ããã³ -- æ¼ç®åãããã¾ãã
ãã以å¤ã«ããã²ãã¿ã¼ãå¼ã³åºãå ´åããå夿ãå¼ãèµ·ããå ´åã«ã坿¬¡å¹æãçºçããå ´åãããã¾ãã
ã«ã³ãæ¼ç®åã¯ããã¹ã¦ã®æ¼ç®åã®ä¸ã§åªå é ä½ãæãä½ãã§ããã«ã³ãã§é£çµãããå¼ããã大ããªå¼ã«çµã¿è¾¼ã¿ããå ´åã¯ãæ¬å¼§ã§å²ãå¿ è¦ãããã¾ãã
ã«ã³ãæ¼ç®åã¯ã以ä¸ã®ãããªä»ã®å ´æã§æ§æä¸ã®åºåãæåã¨ãã¦ä½¿ç¨ãããã«ã³ãã¨ã¯ãå®å ¨ã«ç°ãªãã¾ãã
- é
ååæååã®è¦ç´ (
[1, 2, 3]) - ãªãã¸ã§ã¯ãåæååã®ä¸ã®ãããã㣠(
{ a: 1, b: 2 }) - 颿°å®£è¨/å¼ã®å¼æ° (
function f(a, b) { ⦠}) - 颿°å¼ã³åºãã®å¼æ° (
f(1, 2)) letãconstãvar宣è¨ã®ãã¤ã³ããªã¹ã (const a = 1, b = 2;)import宣è¨å ã®ã¤ã³ãã¼ããªã¹ã (import { a, b } from "c";)export宣è¨å ã®ã¨ã¯ã¹ãã¼ããªã¹ã (export { a, b };)
å®éããããã®å ´æã®ããã¤ãã¯ã»ã¼ãã¹ã¦ã®å¼ãåãå
¥ãã¾ãããã«ã³ãã§é£çµãããå¼ã¯åãå
¥ãã¾ãããããã¯æ§æä¸ã®ã«ã³ãåºåãè¨å·ã¨ã®ææ§ããé¿ããããã§ãããã®å ´åãã«ã³ãã§é£çµãããå¼ã¯æ¬å¼§ã§å²ãå¿
è¦ãããã¾ããä¾ãã°ã以ä¸ã® const 宣è¨ã¯ 2 ã¤ã®å¤æ°ã宣è¨ãã¦ãããã«ã³ãã¯ã«ã³ãæ¼ç®åã§ã¯ããã¾ããã
const a = 1, b = 2;
次ã®ä¾ã¨ã¯ç°ãªãã¾ããããã§ã¯ b = 2 ã¯å®£è¨ã§ã¯ãªãã代å
¥å¼ ã§ããa ã®å¤ã¯ä»£å
¥ã®è¿å¤ã§ãã 2 ã¨ãªãã1 ã®å¤ã¯ç ´æ£ããã¾ãã
const a = (1, b = 2);
ã«ã³ãæ¼ç®åã¯æ«å°¾ã®ã«ã³ãã¨ãã¦ç¾ãããã¨ã¯ã§ãã¾ããã
ä¾
>for ã«ã¼ãã§ã®ã«ã³ãæ¼ç®åã®ä½¿ç¨
a ãããããã®è¾ºã«10åã®è¦ç´ ãæã¤2次å
é
åã®å ´åã以ä¸ã®ã³ã¼ãã¯ã«ã³ãæ¼ç®åã使ç¨ã㦠i ãã¤ã³ã¯ãªã¡ã³ãã j ããã¯ãªã¡ã³ããããã¨ã§ãé
åã®å¯¾è§è¦ç´ ã®å¤ãåºåãã¾ãã
const a = Array.from({ length: 10 }, () =>
Array.from({ length: 10 }, Math.random),
); // 10Ã10 ã®ä¹±æ°å¤é
å
for (let i = 0, j = 9; i <= 9; i++, j--) {
console.log(`a[${i}][${j}] = ${a[i][j]}`);
}
ã«ã³ãæ¼ç®åã使ç¨ãã¦ä»£å ¥ãé£çµ
ã«ã³ãã¯æãä½ãåªå
é ä½ãæã¤ããï¼ä»£å
¥æ¼ç®åãããä½ãï¼ãè¤æ°ã®ä»£å
¥å¼ãçµåããããã«ä½¿ç¨ãããã¨ãã§ãã¾ããæ¬¡ã®ä¾ã§ã¯ãa 㯠b = 3 ã®å¤ï¼ã¤ã¾ã 3ï¼ã«è¨å®ãã¾ãããã®å¾ãc = 4 å¼ãè©ä¾¡ããããã®çµæãã«ã³ãåºåãå¼å
¨ä½ã®è¿å¤ã¨ãªãã¾ãã
let a, b, c;
a = b = 3, c = 4; // 4 ãè¿ã
console.log(a); // 3 ï¼ãã£ã¨ãå·¦ï¼
let x, y, z;
x = (y = 5, z = 6); // 6 ãè¿ã
console.log(x); // 6 ï¼ãã£ã¨ãå³ï¼
å¦çã¨è¿å¤
ã«ã³ãæ¼ç®åãè¡ããã¨ã®ããã²ã¨ã¤ã®ä¾ããå¤ãè¿ãåã®å¦çã§ããåè¿°ã®ã¨ããæå¾ã®è¦ç´ ã®ã¿ãè¿ãã¾ããããã®ä»ãã¹ã¦ã®è¦ç´ ãè©ä¾¡ãã¾ãããã£ã¦ã以ä¸ã®ãããªãã¨ãã§ãã¾ãã
function myFunc() {
let x = 0;
return (x += 1, x); // return ++x; ã¨åã
}
ããã¯ç¹ã«ã 1 è¡ã®ã¢ãã¼é¢æ°ã§æçãªãã®ã§ããæ¬¡ã®ä¾ã§ã¯ãåä¸ã® map() ã使ç¨ãã¦é
åã®åè¨ã¨è¦ç´ ã® 2 ä¹ã®ä¸¡æ¹ãåå¾ãã¦ãã¾ããããã«ã¯é常ãreduce() 㨠map() ãç¨ãã 2 åã®å復å¦çãå¿
è¦ã§ããã
let sum = 0;
const squares = [1, 2, 3, 4, 5].map((x) => ((sum += x), x * x));
console.log(squares); // [1, 4, 9, 16, 25]
console.log(sum); // 15
åç §ãã¤ã³ãã£ã³ã°ã®ç ´æ£
ã«ã³ãæ¼ç®åã¯æå¾ã®å¼ãã常ã«åç
§ã§ã¯ãªãå¤ã¨ãã¦è¿ãã¾ããããã«ããã this ãã¤ã³ãã£ã³ã°ãªã©ã®ã³ã³ããã¹ãæ
å ±ã失ããã¾ããä¾ãã°ãããããã£ã¢ã¯ã»ã¹ã¯é¢æ°ã¸ã®åç
§ãè¿ãã¾ãããã®é¢æ°ã¯ã¢ã¯ã»ã¹å
ã®ãªãã¸ã§ã¯ããè¨æ¶ãã¦ãããããããããã£å¼ã³åºããæ£è¦ã«åä½ãã¾ãã䏿¹ãã«ã³ãå¼ããã¡ã½ãããè¿ãããå ´åã颿°ã¯ããããæ°ãã颿°å¤ã§ãããã®ããã«å¼ã³åºããã this ã¯æªå®ç¾©ã«ãªãã¾ãã
const obj = {
value: "obj",
method() {
console.log(this.value);
},
};
obj.method(); // "obj"
(obj.method)(); // "obj" ï¼ã°ã«ã¼ãåæ¼ç®åãåç
§ãè¿ãï¼
(0, obj.method)(); // undefined ï¼ã«ã³ãæ¼ç®åã¯æ°ããå¤ãè¿ãï¼
ãã®ææ³ãå©ç¨ããã°ã鿥è©ä¾¡ãããã¨ãã§ãã¾ãããªããªããç´æ¥è©ä¾¡ã§ã¯ã颿°å¼ã³åºãã eval() 颿°ã¸ã®åç
§ã«å¯¾ãã¦ç¾ããããã«è¦æ±ãããããã§ãã
globalThis.isDirectEval = false;
{
const isDirectEval = true;
console.log(eval("isDirectEval")); // true
console.log((eval)("isDirectEval")); // true ï¼ã°ã«ã¼ãåæ¼ç®åã `eval` ã¸ã®åç
§ãè¿ãï¼
console.log((0, eval)("isDirectEval")); // false ï¼ã«ã³ãæ¼ç®åã¯æ°ããå¤ãè¿ãï¼
}
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-comma-operator> |