JavaScript 면접 질문 — 기능 및 범위

아마존에서 내 책 보기https://www.amazon.com/John-Au-Yeung/e/B08FT5NT62
지금 http://jauyeung.net/subscribe/에 내 이메일 목록을 구독하십시오.
전방 개발자의 일자리를 얻기 위해서 우리는 코딩 면접을 완성해야 한다.
본문에서 우리는 몇 가지 기본 함수와 범위 문제를 토론할 것이다.

무엇이 샹들리에입니까?
상승은 변수나 함수가 우리가 정의한 변수나 함수의 범위의 맨 위로 이동하는 것을 의미한다.
JavaScripts는 함수 선언을 해당 역할 영역의 맨 위로 이동합니다. 이 선언은 나중에 참조하고 모든 변수 선언을 가져와 해당 선언undefined의 값을 가져옵니다.
실행 과정에서 향상된 변수는 값을 부여받거나 함수를 실행합니다.var 키워드 성명을 사용하는 함수 성명과 변수만 향상시킵니다.letconst 상량성명의 변수를 올리지 않습니다.또한 화살표 함수와 함수 표현식도 향상되지 않습니다.
예를 들어, 다음 코드에는 향상된 기능이 있습니다.
foo();

function foo(){
 console.log('foo')
}
foo가 향상되었기 때문에 정의하기 전에 호출할 수 있습니다. 함수 성명이기 때문입니다.
다음 변수 선언을 보류합니다.
console.log(x);
var x = 1;
console.log(x);
console.log 상승 이래 첫 번째undefined 수출var x.
그리고 var x = 1가 실행될 때 x는 1로 설정됩니다.그리고 우리는 두 번째 console.log에 1을 기록했다. 왜냐하면 x 전에 그 값을 설정했기 때문이다.
다른 어떤 것도 매달아서는 안 된다.

범위는 무엇입니까?
JavaScript의 역할 영역은 변수나 함수에 효과적으로 액세스할 수 있는 영역입니다.
JavaScript에는 세 가지 역할 영역이 있습니다. — 전역, 함수 및 블록 범위
전역 역할 영역이 있는 변수와 함수는 스크립트나 모듈 파일의 어느 곳에서든 접근할 수 있습니다.
예를 들어, 다음과 같이 글로벌 범위의 변수를 선언할 수 있습니다.
var global = 'global';

const foo = () => {
  console.log(global);
  const bar = () => {
    console.log(global);
  }
  bar();
}
foo();
코드 맨 위에 변수 var 를 설명했기 때문에, 어디서든 접근할 수 있습니다.그래서 두 개console.log를 모두 출력'global'할 것이다.
함수 역할 영역 변수는 함수 내부에서만 사용할 수 있습니다.
다음과 같이 함수 범위의 변수를 정의할 수 있습니다.
const foo = () => {
  var fooString = 'foo';
  console.log(fooString);
  const bar = () => {
    console.log(fooString);
  }
  bar();
}
foo();

console.log(fooString);
위의 코드에서 우리는 함수 작용역 변수fooString가 있다.그것도 var로 성명한 것으로 foo 함수와 끼워넣기bar 함수에서 모두 사용할 수 있다.
따라서 우리는 ‘foo’ 함수 중 2개console.log의 문장 기록foo을 사용할 것이다.
밑부분 console.log 에서 함수 범위 내의 변수가 함수 외부에서 사용할 수 없기 때문에 오류가 발생했습니다.
블록 역할 영역 변수는 블록 내에서만 사용할 수 있습니다.즉 if 블록, 함수 블록, 순환 또는 현식 정의의 블록 안에 있다.큰 괄호로 구분된 것은 모두 블록이다.
그것들은 변수인지 상수인지에 따라 let 또는 const로 정의할 수 있다.
예를 들어,
if (true) {
  let x = 1;
  console.log(x);
}

console.log(x);
그런 다음 x 블록에서만 사용할 수 있습니다.밑에 있는 if 에서 console.log 오류가 발생했습니다.
마찬가지로 만약 우리가 순환이 있다면:
for (let i = 0; i <= 1; i++) {
  let x = 1;
  console.log(x);
}

console.log(x);
그런 다음 x is not defined 루프 내에서만 사용할 수 있습니다.밑에 있는 x 에서 console.log 오류가 발생했습니다.
또한 블록을 명시적으로 정의하여 변수를 외부와 격리할 수도 있습니다.
{
  let x = 1;
  console.log(x);
}

console.log(x);
x is not defined는 중괄호 안에서만 제공됩니다.밑부분x은 우리에게 실수를 줄 것이다.
역할 도메인은 JavaScript에서 변수를 찾을 수 있는 정도를 결정합니다.현재 범위 내에 있지 않으면 외부 범위 내에서 볼 것입니다.
외부 역할 영역에서 그것을 찾고 우리가 변수에 접근할 수 있는 방식으로 설명하면 이 값을 가져옵니다.
그렇지 않으면, 찾지 못하면 오류가 발생할 수 있습니다.

폐쇄는 무엇입니까?
패킷을 닫는 것은 함수로서 현재 범위 내의 변수와 파라미터를 기억하고 전체 범위까지 갈 수 있다.
JavaScript에서 내부 함수를 외부 함수 이외의 역할 영역에 사용할 수 있는 경우
우리는 그것을 사용하여 제한된 방식으로 사유 함수나 데이터를 공개할 수 있다.
예를 들어 다음과 같은 패킷 닫기 함수를 작성할 수 있습니다.
const foo = (() => {
  let x = 'Joe';
  const privateFn = () => {
    alert(`hello ${x}`);
  }

  return {
    publicFn() {
      privateFn();
    }
  }
})();

foo.publicFn();
위 코드에서 우리는 (즉시 호출되는 함수 표현식) IIFE가 하나 있는데, 이 함수는 console.log 속성을 가진 대상을 되돌려줍니다. 이 속성은 호출 publicFn 함수로 설정되어 있으며, 이 함수는 대외적으로 숨겨집니다.
또한 privateFn를 호출할 때 함수 내부에 privateFn가 성명되었다.
그리고 되돌아오는 대상을 x에 분배한 후 호출publicFn한다.
코드는 클라이언트에 개인 항목을 숨기고 우리가 공개하고자 하는 내용을 외부에 공개하는 것을 실현한다.
보시다시피 클로즈업은 외부에서 사용할 수 없는 범위 내에 있는 프로젝트를 저장할 수 있고 클로즈업 외에 사용할 수 있는 내용을 공개할 수 있습니다.
폐쇄의 주요 용도는 일부 실체의 사유성을 유지하고 외부에 필요한 기능을 공개하는 것이다.

결론
향상은 컴파일하는 동안 함수와 변수를 코드 맨 위로 끌어올리는 것입니다.
함수 성명은 완전히 끊겼습니다. foo 성명된 변수는 값이 끊기기 전에 모든 것을 가지고 있습니다.
역할 영역은 코드가 변수나 상수에 유효하게 접근하는 곳이다.
패킷을 닫는 것은 외부 함수를 포함하는 일부 실체의 내부 함수를 되돌려 주는 방법이다.그것은 어떤 기능을 공개하는 동시에 어떤 내용의 은밀성을 유지하는 데 도움이 된다.

좋은 웹페이지 즐겨찾기