JS 의 역할 영역 이해
1. 역할 영역 이란 무엇 인가
쉽게 말 하면 역할 도 메 인 은 프로그램 소스 코드 에서 변 수 를 정의 하 는 구역 이자 코드 의 현재 컨 텍스트 환경 입 니 다. 더 좋 은 설명 은 메모리 에서 열 린 공간 입 니 다. 자바 스 크 립 트 는 품사 역할 도 메 인 을 사용 하 는 동시에 정적 역할 도 메 인 이 라 고도 부 릅 니 다.
정적 역할 영역, 동적 역할 영역:
var a= 1;
function fun1() {
console.log(a);
}
function fun2() {
var a= 2;
fun1();
}
fun1(); // 1
JavaScript 는 정적 역할 영역 을 사용 하기 때문에 그의 실행 과정 은 다음 과 같 습 니 다.
fun 1 함 수 를 실행 하고 fun 1 함수 내부 에서 부분 변수 a 가 있 는 지 찾 습 니 다.없 으 면 위의 코드, 즉 a 는 1 이 므 로 최종 결 과 는 1 입 니 다.
그렇다면 자 바스 크 립 트 는 동적 역할 영역 을 사용 하고 있 습 니 다. 그의 집행 은 어떻게 되 었 습 니까?
fun 1 함 수 를 실행 하고 fun 1 함수 내부 에서 부분 변수 a 가 있 는 지 찾 습 니 다.없 으 면 fun 1 을 호출 하 는 함수 에서 a, 즉 fun 2 함수 에서 a 변 수 를 찾 습 니 다. 이렇게 실 행 된 결 과 는 2 입 니 다.
2. 역할 영역 간 의 차이
function a() {
function b() {
c = 1;
}
}
문 제 를 제기 하면 c 의 역할 영역 은?b 의a 의아, 원래 전체적인 것 이 었 군요. 앞 에 var 가 없 었 기 때 문 입 니 다.
부분 역할 영역:
함수 내부 와 같은 고정된 코드 세 션 에서 만 접근 할 수 있 습 니 다.
직접 코드 올 리 기:
function fun1() {
var a = 1;
console.log(a);
}
fun1(); // 1
function fun2() {
var b = 2; // b
}
fun2();
console.log(b); // :b b is not defined
전역 역할 영역:
var c = 3;
function fun3() {
console.log(c);
}
fun3(); // 3
function fun4() {
d = 4; //
}
fun4();
console.log(d); // 4
위의 두 가지 예 에서 볼 수 있 듯 이 함수 내 부 는 외부 변 수 를 방문 할 수 있 고 함수 외부 에 서 는 함수 내부 변 수 를 방문 할 수 없습니다.이 곳 에서 주의해 야 할 것 은 프로 세 스 외부 라면 var 와 var 로 정의 하지 않 는 변 수 는 모두 전역 변수 이지 만 프로 세 스 내부 에서 var 로 정의 한 변 수 는 국부 변수 이 고 var 로 정의 하지 않 은 변 수 는 전역 변수 입 니 다.
3. ES6 에 추 가 된 let 역할 영역
ES6 가 나타 나 기 전에 블록 급 역할 구역 의 개념 이 없 으 면 일부 상황 에서 국부 변 수 는 전체적인 변 화 를 오염 시 킬 수 있다. 예 를 들 어:
var a = 1;
function fun1() {
var a = 2;
console.log(a);
}
fun1(); // 2 fun1 a, a, 。
ES6 의 블록 급 역할 영역 은 {}, for, if 에서 설명 할 수 있 습 니 다.
ES6 는 몇 가지 특징 이 있 습 니 다.
1. let 는 블록 급 변수 로 window 에 존재 하지 않 습 니 다. window. 변수 이름 은 찾 을 수 없 는 2 입 니 다. 성명 이 없 는 상태 에서 사용 하면 이상 3 을 던 지고 중복 성명 변 수 를 허용 하지 않 습 니 다. 즉, 변수 이름 이 유일 합 니 다.
let a = 1;
window.a; // undefined
function fun1(){
console.log(b);
let b =2;
}
fun1(); // fun1 is not defined
function fun2() {
let c =2;
var c = 3;
console.log(c);
}
fun2(); // Identifier 'b' has already been declared
let for 순환 에서 의 사용: (var 먼저 보기)
for(var i=0; i<2; i++){
console.log('outer i: ' + i);
for(var i=0; i<2; i++){
console.log('inner i: '+i); // , i i
}
}
결 과 는:
outer i: 0 inner i: 0 inner i: 1
var 를 let 로 바 꾸 기:
for(var i=0; i<2; i++){
console.log('outer i: ' + i);
for(let i=0; i<2; i++){
console.log('inner i: '+i); //
}
}
결 과 는:
outer i: 0 outer i: 0 inner i: 0 inner i: 1 outer i: 1 inner i: 0 inner i: 1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.