MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

block

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

블럭 구문(또는 다른 언어에서는 복합구분)은 0개이상의 구문을 그룹으로 묶는데 사용된다. 이 블럭은 중괄로 쌍으로 구분 된다.

문법

{
  statement_1;
  statement_2;
  ...
  statement_n;
}
statement_1, statement_2, statement_n
블럭 구문 내에서 그룹으로 묶인 구문들.

설명

이 구문은 제어구문과 함께 자주 사용된다. (e.g. if...else, for, while). 예를 들면:

while (x < 10) {
  x++;
}

블럭 구분이 세미콜론으로 끝나지 않은 점에 주의한다.

블럭 구문은 다른 언어에서 가끔  복합구문이라고 한다. JavaScript가 한개의 구문만 기대하는 곳에 여러 개의 구문을 사용할 수 있도록 해준다. JavaScript에서 구문을 블럭으로 묶는 것은 흔한 일이다. 반대로 empty statement를 사용하는 것도 가능하다. 이것은 구문이 필요한 곳에 구문을 제공하지 않는 것이다.

블럭 유효 범위(scope)가 아님

중요: var로 선언된 변수는 블럭 유효범위(scope)를 갖지 않는다. 블럭 시작과 새롭게 선언된 변수는 블럭을 포함한 함수나, 스크립트의 유효범위(scope)를 가지며,  이 결과는 블럭 그 자체를 넘어서 지속된다. 다시 말해, 블럭 구문과 함께 새로운 유효범위(scope)가 시작되지 않는다. "단독" 블럭은 유효한 문법구문 이기는 하지만,  JavaScript에서 단독 블럭 사용을 원하지 않을 것이다. 왜냐하면 C나 Java의  블럭과 같이 행동할 것이라고 기대한다면 그렇게 행동하지 않기 때문이다. 예를 들면:

var x = 1;
{
  var x = 2;
}
console.log(x); // logs 2

이 로그는 2를 출력할 것이다.  왜냐하면  이 블럭 안의 var x 구문이 블럭 앞쪽의 var x 구문과 동일한 유효범위(scope)를 가지기 때문이다. C나 Java에서는 동일한 코드로 1이 출력될 것이다.

만약 블럭 스코드를 원한다면  let 사용을 고려해 본다.

스펙

Specification Status Comment
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Block statement' in that specification.
Draft  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Block statement' in that specification.
Standard  
ECMAScript 5.1 (ECMA-262)
The definition of 'Block statement' in that specification.
Standard  
ECMAScript 3rd Edition (ECMA-262)
The definition of 'Block statement' in that specification.
Standard  
ECMAScript 1st Edition (ECMA-262)
The definition of 'Block statement' in that specification.
Standard Initial definition. Implemented in JavaScript 1.0.

브라우저 호환성

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

참고

문서 태그 및 공헌자

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