콤마 연산자

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

콤마 연산자 는 각각의 피연산자를 계산하고(왼쪽에서 오른쪽 순으로) 마지막 연산값을 반환합니다.

문법

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 와 같은 효과
}

스펙

Specification Status Comment
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Comma operator' in that specification.
Draft  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Comma operator' in that specification.
Standard  
ECMAScript 5.1 (ECMA-262)
The definition of 'Comma operator' in that specification.
Standard  
ECMAScript 1st Edition (ECMA-262)
The definition of 'Comma operator' in that specification.
Standard Initial definition

브라우저 호환성

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)

 

더 보기

문서 태그 및 공헌자

 이 페이지의 공헌자: hoony
 최종 변경: hoony,