본문 바로가기

Learning/Javascript

선언이 없는 할당 - 소괄호 ( ... )

JS 소스를 보다 보면 가끔 소괄호로 둘러쌓인 함수나 코드들이 보인다.

(function ()
..
)

혹은

var a, b;

({a, b} = {a: 1, b: 2});

참고: 할당 문을 둘러싼 ( .. )는 선언 없이 객체 리터럴(object literal) 비구조화 할당을 사용할 때 필요한 구문입니다.

{a, b} = {a:1, b:2}는 유효한 독립 구문이 아닙니다. 좌변의 {a, b}이 객체 리터럴이 아닌 블록으로 간주되기 때문입니다.

하지만, ({a, b} = {a:1, b:2})는 유효한데, var {a, b} = {a:1, b:2}와 같습니다.

( .. ) 표현식 앞에는 세미콜론이 있어야 합니다. 그렇지 않을 경우 이전 줄과 연결되어 함수를 실행하는데 이용될 수 있습니다.

 

참고는 MDN의 내용이다. 선언없이 사용을 할수 있게 하는 구문 

표현식 앞에는 세미콜론이 있어야 한다는 말은 만약 (...) 구문의 앞에 

function () { ...} 이 있으면 잘못하면 시스템은 

function () { ...}(...) 이렇게 연결 시켜서 인식할수 있으니 

function () { ...}; (...) 이렇게 나누라는 예기인듯 하다.

 

이구문은 이전에 타 언어를 할때도 나오는 부분이다.

Random ran = new Random();
int men = ran.Next(1,4);

int men = (new Random()).Next(1,4);

이렇게 사용이 가능

(솔직히 가물가물하다 ㅎ)