일부 C와 같은 프로그래밍 언어의 경우, Curly Braces의 각 코드는 고유 한 범위를 가지고 있으며 변수는 코드 세그먼트 외부에서 보이지 않습니다. 우리는 블록 범위를 호출하며 JavaScrip에 블록 범위가 없습니다. 대신 JavaScript는 함수 범위를 사용합니다. 변수는 기능 본문에 정의되어 기능 본문에 중첩 된 기능 본체가 정의됩니다. 다음 코드에서 다른 위치에 정의 된 I, J 및 K는 동일한 범위 내에서 정의됩니다.
코드 사본은 다음과 같습니다.
함수 텍스트 (O)
{
var i = 0;
경고 (타입 o);
if (typeof o == "string")
{
var j = 0;
for (var k = 0; k <10; k ++)
{
경고 (k); // 출력 0-9
}
경고 (k); // 출력 10
}
경고 (j); // 출력 0
}
JavaScript의 함수 범위는 함수 내부에서 선언 된 모든 변수가 항상 함수 본문에서 볼 수 있음을 의미합니다. 흥미롭게도 이것은 변수가 선언되기 전에도 사용할 수 있음을 의미합니다. JavaScript 의이 기능은 비공식적으로 Hoisting이라고합니다. 다음 코드를보십시오
코드 사본은 다음과 같습니다.
var global = "Globas";
기능 글로벌 ()
{
경고 (글로벌); // 정의되지 않았습니다
var global = "Hello Qdao";
경고 (글로벌); // hello qdao
}
함수 범위의 특성으로 인해 로컬 변수는 항상 기능 본문 전체에 정의됩니다. 이는 기능 본문 내부의 변수가 동일한 이름의 전역 변수를 커버한다는 것을 의미합니다. 그럼에도 불구하고 프로그램이 VAR 문을 실행할 때 로컬 변수가 진정으로 할당됩니다. 따라서 위의 프로세스는 다음과 같습니다. 함수의 변수를 기능 본문의 상단으로 선언하고 동료 변수의 초기화를 원래 위치에 남겨 둡니다.
코드 사본은 다음과 같습니다.
var global = "Globas";
기능 글로벌 ()
{
var global;
경고 (글로벌); // 정의되지 않았습니다
Global = "Hello Qdao";
경고 (글로벌); // hello qdao
}