역할 영역 과 네 임 스페이스
어쨌든 함 수 는 자신의 역할 영역 을 가 진 유일한 구조 이 고 다른 어떠한 형식의 구조 도 역할 영역 을 지원 하지 않 습 니 다.코드 는 다음 과 같다.
var demo = function ()
{
...
};
혹시
function demo ()
{
...
};
JavaScript 언어 에는 명시 적 네 임 스페이스 정의 가 없습니다. 이 는 모든 대상 이 전체 적 으로 공 유 된 네 임 스페이스 에서 정의 되 었 음 을 의미 합 니 다.
변 수 를 참조 할 때 이 변 수 를 발견 할 때 까지 현재 역할 영역, 전역 역할 영역 을 위로 차례로 옮 겨 다 닙 니 다.
암시 적 전역 변수 와 부분 변수
함수 자체 역할 영역 에서 변수 성명 이 var 표현 식 을 사용 하지 않 으 면 암시 적 전역 변 수 를 만 들 수 있 습 니 다.먼저 아래 코드 를 보십시오
var demo = function ()
{
number = 1;
};
demo();
혹시
var demo = function ()
{
for (number = 0; number < 5; number ++)
{
...
};
};
demo();
실행 결 과 는 전역 변수 number 를 설명 합 니 다.전역 역할 영역 에 있 는 동명 변 수 를 설명 하거나 덮어 쓰 려 면 var 표현 식 을 사용 해 야 합 니 다.코드 는 다음 과 같다.
var demo = function ()
{
var number = 1;
};
demo();
혹시
var demo = function ()
{
for (var number = 0; number < 5; number ++)
{
...
};
};
demo();
실행 결 과 는 현재 역할 영역 에서 만 유효 하 다 는 부분 변수 number 를 설명 합 니 다.
변수 선언 향상 (호 이 스 팅)
변 수 는 자 바스 크 립 트 언어 에서 향 상 됩 니 다. 이것 은 var 표현 식, function 성명 이 현재 역할 영역 맨 위로 향 상 됩 니 다.먼저 아래 코드 를 보십시오
demo();
var demo = function ()
{
...
};
혹시
demo();
function demo ()
{
...
};
코드 가 실행 되 기 전에
var demo;
demo();
demo = function ()
{
...
};
혹시
function demo ()
{
...
};
demo();
실행 결 과 는 첫 번 째 코드 실행 에 실 패 했 고 두 번 째 코드 실행 에 성 공 했 습 니 다.첫 번 째 코드 가 실 행 될 때 demo 는 성명 에 불과 하지만, 여전히 undefined 값 이 부족 하기 때 문 입 니 다.
매우 재 미 있 는 것 은 부분 변수 성명 의 향상 이다.다음 코드 를 보십시오
var number = 0;
var demo = function ()
{
if (true)
{
number = 1;
}
else
{
var number = 2;
};
console.log(number);
};
demo();
console.log(number);
코드 가 실행 되 기 전에
var number, demo;
number = 0;
demo = function ()
{
var number;
if (true)
{
number = 1;
}
else
{
number = 2;
};
console.log(number);
};
demo();
console.log(number);
출력 결 과 는 1, 0 입 니 다.전역 변수 number 를 덮어 쓰 는 코드 는 국부 변수 number 로 바 뀌 었 습 니 다. 전역 변수 number 를 덮어 쓰 려 면 모든 var 표현 식 을 취소 해 야 합 니 다.코드 는 다음 과 같다.
var number = 0;
var demo = function ()
{
if (true)
{
number = 1;
}
else
{
number = 2;
};
console.log(number);
};
demo();
console.log(number);
출력 결 과 는 1, 1 입 니 다.
네 임 스페이스
전체 역할 영역 만 이름 충돌 을 일 으 킬 수 있 습 니 다. 솔 루 션 은 익명 포장 기 입 니 다. 익명 함 수 를 통 해 새로운 네 임 스페이스 를 만 드 는 역할 을 합 니 다.먼저 아래 코드 를 보십시오
(function (){
...
})();
익명 함수 가 표현 식 으로 여 겨 지기 때문에 호출 성 을 위해 서 는 먼저 실행 해 야 합 니 다. 저 희 는 실 행 된 익명 함 수 를 익명 포장 기로 이해 할 수 있 습 니 다.다음 코드 를 보십시오
( //
function ()
{
...
}
) //
(); // ,
익명 포장 기 를 통 해 네 임 스페이스 를 만 들 면 이름 충돌 을 방지 할 수 있 을 뿐만 아니 라 프로그램의 모듈 화 에 도 유리 합 니 다.
다른 함수 표현 식 호출 방법 도 있 습 니 다.코드 는 다음 과 같다.
+function (){
...
}();
!function (){
...
}();
(function (){
...
}());
재 미 있 는 사고 문제
var number = 0;
(function (){
console.log(number); //
var number = 1;
})();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.