> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 변수 범위_javascript 기술에 대한 인터뷰 질문

JavaScript 변수 범위_javascript 기술에 대한 인터뷰 질문

WBOY
풀어 주다: 2016-05-16 15:11:29
원래의
2061명이 탐색했습니다.

편집자는 이 질문이 JavaScript 범위를 이해하는 데 매우 도움이 된다고 생각하여, 다른 사람들에게도 도움이 되기를 바라는 마음으로 저만의 문제 해결 아이디어를 다시 정리했습니다.

먼저 면접 질문 살펴보기:

var arr = [1, 2, 3];
  for (var i = 0, j; j = arr[i++];) {
    console.log(j);
  }

  console.log('---------');
  console.log(i);
  console.log('---------');
  console.log(j);
  console.log('---------');

로그인 후 복사

문제를 해결하기 전에 먼저 JavaScript의 변수 필드와 관련된 지식을 검토해 보겠습니다.

전역변수(전역)
전역변수는 어디에서나 접근이 가능한 변수를 의미합니다.

두 가지 상황이 있습니다.

var 키워드 사용 여부에 관계없이 선언된 외부 함수
var 키워드를 사용하지 않고 함수에서 선언해야 합니다. 물론 선언된 문장을 실행해야 합니다
지역변수(Local)
지역 변수는 선언된 함수 내에서만 접근 가능합니다
함수 내부 선언, var 키워드 사용
주의할 점 두 가지

먼저 코드를 살펴보세요.

alert(i); // 输出 undefined
 
 for (var i = 0; i < 1; i++){};
 
 alert(i); // 输出1
로그인 후 복사

JavaScript에는 명령문 범위가 없습니다. 명령문 내에 정의된 변수는 명령문 외부로 퍼집니다. 예제에서는 i가 for 문 외부에서 선언되었지만 계속 액세스할 수 있습니다.
for 문 이전에 액세스할 수 있지만 아직 할당되지 않았습니다
문제 해결을 시작해 보겠습니다.

i++는 i를 사용한 후에 추가됩니다.

처음 실행 시 j=arr[0], 이후 i=1, console.log(j)는 1을 출력합니다

두 번째 실행 시 j=arr[1], 그 다음에는 i=2, ocnsole.log(j)는 2를 출력합니다

세 번째 실행 시 j=arr[2], 그 다음 i=3, ocnsole.log(j)는 3을 출력합니다

네 번째(for 조건을 충족하지 않음) j=arr[3]이 정의되지 않은 다음 i=4, ocnsole.log(j)에 출력이 없고 for 루프를 종료합니다

for 문이 실행된 후 console.log(i)는 위 분석에서 4를 출력하고, console.log(j)는 정의되지 않음을 출력합니다

최종 출력 결과는 다음과 같습니다.

2
---------
---------
undefined
---------
로그인 후 복사

위의 분석과 결과를 다들 이해하셨을 텐데요, 그러면 추론이 시작됩니다.

질문 빌려서 질문 바꾸기
제목:
var arr = [1, 2, 3];

  for (var i = 0, j; j = arr[++i];) {
    console.log(j);
  }

  console.log('---------');
  console.log(i);
  console.log('---------');
  console.log(j);
  console.log('---------');

로그인 후 복사

정답:

2
3
---------
3
---------
undefined
---------
로그인 후 복사

빌린 질문과 수정된 질문 2
제목:

function xxx() {
    var arr = [1, 2, 3];
    for (var i = 0, j; j = arr[i++];) {
      console.log(j);
    }
  }
  xxx();

  console.log('---------');
  console.log(i);
  console.log('---------');
  console.log(j);
  console.log('---------');

로그인 후 복사

정답:

1
2
3
---------
报错:Uncaught ReferenceError: i is not defined
로그인 후 복사

이 내용을 여러분과 공유합니다. JavaScript 범위를 이해하는 데 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿