>  Q&A  >  본문

객체 키가 함수 호출 외부에 있지만 함수 범위 내에 있지 않습니다.

저는 fabric.js를 사용하고 있는데 어느 순간 다음 코드를 사용했습니다:

으아아아

하지만 handleScaled函数中opt.action정의되지 않음:

으아아아

console.log(opt.action) 在函数调用之前会正确显示“scale”,但是当我在 handleScaled 中调用相同的内容时,opt.log(opt.action) 会正确显示“scale”。操作정의되지 않음.

호출된 함수 범위 내에서 opt.action가 존재하지 않는 것 같은데 호출 직전에 존재하는 이유는 무엇인가요?

올바른 작업 코드는 작업이 "scale"인 경우에만 호출됩니다. handleScale:

으으으으

P粉133321839P粉133321839373일 전454

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

  • P粉356361722

    P粉3563617222023-09-13 00:36:00

    코드에서 handleScaled 函数之前记录 opt.action 时,它会正确显示“scale”,因为它正在访问 action传递给 canvas.on 事件处理程序的回调函数中 opt 对象的 code> 属性。当您在 handleScaled 函数中记录 opt.action 时,它显示为 undefined,因为 opt 对象被传递给handleScaled 函数是该对象的另一个实例。它没有 action 属性,因为它与之前记录的 opt를 호출하면 개체가 다릅니다.

    함수에서 opt.action 可以在 handleScaled에 액세스할 수 있도록 하려면 다음과 같이 코드를 수정하면 됩니다.

    으아악

    opt 对象直接传递给 handleScaled 函数,您可以在函数作用域内保留对其属性的访问权限。确保传递给 handleScaledopt 对象包含预期的 action 속성을 추가합니다.

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