2015-01-11 2 views
0

전역 범위 기본 선언을 가로 채기위한 코드를 작성하거나 각 프로그램이나 함수가 액세스 할 수있는 자바 스크립트 엔진 자체의 설정을 통해이 작업을 수행 할 수 있습니까?javascript에서 선언되지 않은 변수를 전역 범위 대신 현재 로컬 범위 (처음 사용시 기준)로 선언 하시겠습니까?

만약 내가 프로그램 (또는 기능)의 상단에 전역 변수 대신 선언되지 않은 변수에 대한 로컬 범위를 사용하도록 자바 스크립트 엔진에 알려준다면 ... 자바 스크립트 엔진이 각 함수를 컴파일 할 때 지역 범위에서 선언 할 것입니다.

변수를 현재 범위 밖에서 선언하려는 경우 아무도 선언하지 않으므로 명시 적으로 수행해야한다는 것을 이해합니다. 그러나 전역 범위를 기본값으로 설정하면 오류와 강제로 너무 많은 공간이 남습니다. 각 함수에서 var 문을 많이 입력하므로 가능한 경우 내 프로그램의 기본값을 변경하고 싶습니다.

내 기본 목적은 모든 함수의 맨 위에있는 var 문에 로컬 변수의 목록을 입력하지 않고이 목록을 로컬 변수와 동기화하여 유지하는 것을 피하기위한 것입니다. 함수 내에서. 전역 범위 기본값을 허용하지 않으면 오류 위험이 줄어 듭니다.

필자는 선언되지 않은 변수가 처음 사용 된 범위보다 높은 범위에서 끝나기를 원치 않습니다. 내가 볼 수있는 전역 범위를 기본값으로 갖는 데 가치가 없습니다.

나는 현재의 범위 (또는 전역 범위)에서 변수를 선언 할 수 있지만 그렇게하지 않으려 고하고 자바 스크립트에 내장 된 전역 범위 기본값보다 유용한 기본값을 사용하고 싶습니다.

또한 "엄격한 사용"을 사용하여 모든 변수를 명시 적으로 선언 할 수 있음을 알고 있습니다. 옳고 그른지에 대해 논쟁하고 싶지는 않지만, 주어진 기능에 대한 전역 범위 대신 기본 범위를 로컬 범위로 변경하는 방법이 있는지 묻는 것.

+1

나는 이러한 옵션을 알고 있지 않습니다. 그러나 당신은 가능성을 제한하기 위해 '엄격하게'사용할 수 있습니다. – Sebas

+2

이 경로를 찾고있는 근본적인 문제는 무엇입니까? – charlietfl

+3

[CoffeeScript] (http://coffeescript.org)를 사용하여이 특별한 성가심을 해결하고 Javascript 구문을 더 맛있게 전반적인 IMO로 만듭니다. – deceze

답변

1

아니요, Javascript는 작동 방식과 달리 변수 선언 규칙을 머리에 대고 반전 할 스위치가 없습니다.

'use strict'catch problems more easily에게 도움을 줄 수있는 옵션이지만 규칙은 변경하지 않습니다.

원하는 것은 다른 언어입니다. 예를 들어 CoffeeScript은 Javascript 전 처리기로 다른 것들 중에서도 variable declaration issue을 명시 적으로 해결합니다.

+1

IMO CoffeeScript는 JavaScript보다 덜/SASS가 CSS와 같습니다. 일단 익숙해지면 물건을 쓰는 방식으로 돌아갈 생각이 상상할 수 없습니다.IDE에 너무 잘 통합되어있어 추가적인 부담이 없습니다. 난 CoffeeScript로 코드를 작성하고, IDE는 투명하게 컴파일하고, 코드에서 평소대로 .js 파일을 사용한다. Chrome의 디버거는 원본 CoffeeScript 코드로 투명하게 매핑 될 수 있습니다. 놀라운 점이 있습니다. – deceze