현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.
콤마 연산자 는 각각의 피연산자를 계산하고(왼쪽에서 오른쪽 순으로) 마지막 연산값을 반환합니다.
문법
expr1, expr2, expr3...
매개 변수
expr1
,expr2, expr3...
- 모든 표현식 가능.
설명
단일 표현식을 요구하는 곳에 복수의 표현식을 사용하고 싶을 때 콤마 연산자를 사용하실 수 있습니다. for
반복문이 가장 흔하게 사용되는 예시 중 하나입니다.
예제
a
가 가 각각 10개의 요소를 가진 2차원 배열이라고 가정할 경우, 다음 코드에서처럼 2개의 변수를 한번에 증가시키기 위해 콤마 연산자를 사용할 수 있습니다.
다음 코드는 배열에서 대각의 요소값을 출력하는 코드입니다.
for (var i = 0, j = 9; i <= 9; i++, j--) console.log("a[" + i + "][" + j + "] = " + a[i][j]);
var
선언과 같은 선언문에서 쓰이는 콤마는 일반적인 콤마 연산식과 다른 결과를 가져올 수 있습니다. 단일 표현식으로 쓰이지 않을 수 있기 때문입니다. 다음 예제를 보면, a
에 b = 3
의 값을 대입하고 있지만, c = 4
표현식은 또 다른 값을 대입하고 있기 떄문에 콘솔에서는 4를 반환하고 있습니다. 이는 연산자 우선 결합 법칙 때문입니다.
// 전역 변수를 선언하고 있기 때문에 'strict 모드'에서는 동작하지 않을 수 있습니다. a = b = 3, c = 4; // 콘솔에는 4를 반환 console.log(a); // 3 (좌-우선) x = (y = 5, z = 6); // 콘솔에는 6을 반환 console.log(x); // 6 (우-우선)
위 콤마 연산자는 배열, 객체에서 쓰이는 콤마 혹은 함수 매개 변수에서 쓰이는 콤마와는 완전히 다릅니다.
연산 후 반환
콤마 연산자를 활용하는 또 다른 예제는 반환 전에 연산하는 방법입니다. 언급한대로 항상 마지막에 선언한 요소가 반환되더라도 콤마 전에 있는 표현식이 연산 된 후 반환됩니다. 그래서 다음과 같습니다:
function myFunc () { var x = 0; return (x += 1, x); // ++x 와 같은 효과 }
스펙
브라우저 호환성
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
기본 지원 | (Yes) | (Yes) | 3.0 | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
기본 지원 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |