obj 개체에 작성된 str:"world"는 obj.str="world"를 의미하기 때문입니다. 이는 변수가 아니라 속성입니다. 마지막으로 실행한 obj.fun()에서 나타나는 것은 속성이 아닌 str 변수입니다(물론 이는 전역 창의 속성이기도 합니다). 이해하셨나요? this.str 또는 obj.str에 경고하면 "world"를 얻을 수 있습니다.
str 변수는 실제로 window의 속성이며 obj 개체의 str 속성과 아무 관련이 없습니다. 여기에는 범위 체인 문제가 포함되지 않습니다. 다음 사항을 이해해야 합니다.
으아악
이 예에서는 전역 변수 str이 함수 변경 시 먼저 재할당됩니다. 경고(str)를 실행하려면 자신의 범위 체인의 시작점, 즉 자신의 변수에서 str 변수를 찾습니다. 찾을 수 없으면 계속해서 레벨 1 검색을 통해 str 변수를 찾았지만 현재 str이 world에 다시 할당되었으므로 world가 나타납니다.
으아악
으아악
obj 개체에 작성된 str:"world"는 obj.str="world"를 의미하기 때문입니다. 이는 변수가 아니라 속성입니다. 마지막으로 실행한 obj.fun()에서 나타나는 것은 속성이 아닌 str 변수입니다(물론 이는 전역 창의 속성이기도 합니다). 이해하셨나요? this.str 또는 obj.str에 경고하면 "world"를 얻을 수 있습니다.
str 변수는 실제로 window의 속성이며 obj 개체의 str 속성과 아무 관련이 없습니다. 여기에는 범위 체인 문제가 포함되지 않습니다. 다음 사항을 이해해야 합니다.
으아악이 예에서는 전역 변수 str이 함수 변경 시 먼저 재할당됩니다. 경고(str)를 실행하려면 자신의 범위 체인의 시작점, 즉 자신의 변수에서 str 변수를 찾습니다. 찾을 수 없으면 계속해서 레벨 1 검색을 통해 str 변수를 찾았지만 현재 str이 world에 다시 할당되었으므로 world가 나타납니다.
으아악
이해하셨나요?