찾다

 >  Q&A  >  본문

함수를 변수에 직접 할당하는 것과 함수를 참조하는 것의 차이점은 무엇인가요?

함수를 변수에 직접 할당하는 것과 함수를 참조하는 것의 차이점은 무엇인가요?

예: 조각 1 및 조각 2

클립 1

으아악

클립 2

으아악

조각 1의 onclick 함수는 fn의 변수에 대한 액세스를 허용하지만 조각 2의 onclick 함수는 fn의 변수에 대한 액세스를 허용하지 않습니다. 조각 2의 click은 fn 외부에서 정의되기 때문입니다. fn에 액세스할 수 없습니다. 즉, 조각 2에서 onclick에 대한 할당이 실제로 복사본이 아니라 참조라는 뜻입니까?

大家讲道理大家讲道理2742일 전517

모든 응답(2)나는 대답할 것이다

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:35:08

    아니요, 아니요, 메서드를 호출하거나 매개변수를 전달하는 것이 아니므로 이 두 예제의 핵심은 참조/복사 문제가 아닙니다

    이것은 범위(프로토타입 체인) 문제입니다

    변수는 범위마다 서로 다른 액세스 권한을 가집니다.
    하위 범위는 상위 범위에 액세스할 수 있습니다.
    상위 범위는 하위 범위에 액세스할 수 없습니다.
    유사한 범위는 서로 상호 작용할 수 없습니다.

    를 방문하세요.

    회신하다
    0
  • PHPz

    PHPz2017-05-19 10:35:08

    js의 범위는 정의할 때 이미 결정되어 있습니다.

    클립1중

    으아악

    box에 바인딩된 onclick 콜백은 fn 함수 내부에 있으므로 그 안에 있는 모든 지역 변수는 콜백에서 액세스할 수 있습니다. onclick回调,是在fn的函数内部,因此其内部所有局部变量都能被该回调访问到。

    片段2中

    function fn(){
      var box = document.getElementById("box");
      box.onclick = function(){
          console.log(111);
      };
      box = null;
    }

    click方法在fn函数外部,与之同级,由于定义时,click

    clip2중#🎜🎜# 으아악 #🎜🎜#click 메서드는 fn 함수 외부에 있으며 동일한 수준에 있습니다. click이 정의되었을 때 아직 fn 내부에 있지 않기 때문에 내부 범위를 지정할 수 없습니다. 액세스했습니다. #🎜🎜#

    회신하다
    0
  • 취소회신하다