w.r.t a div라고하는 this
포인터의 범위 또는 가시성은 NESTED 기능이 아닌 의도 된 기능으로 제한됩니다.왜 javascript의 "this"포인터 범위가 제한되어 있습니까?
는하지만, 그 함수의 모든 지역 변수가 중첩 된 기능에 볼 수 있습니다 - 왜이 사업부에 <function name>(this)
와 함수를 호출을 통해 this
포인터를 받고 .. ?? 일어나지 않는 - 심지어 this
뜻이 나던 또한 짧은에서 <function name>
에서 지역 변수는 지적, 여기에 tst1 function
this
변수에 저를 혼동 코드 ..
<html>
<script type="text/javascript" >
function tst1(){
setTimeout(
function(){
alert(this.id)
}, 2000)
}
function tst2(){
var elem = this
setTimeout(
function(){
alert(elem.id)
}, 2000)
}
</script>
<style type="text/css">
.test{
margin: 40px 100px;
background-color: green;
width: 200px;
line-height: 40px;
text-align: center;
height: 40px;
}
</style>
<div id="fooBar" class="test" onclick="tst1.call(this)"> Emily Rossum</div>
<div id="chickenRun" class="test" onclick="tst2.call(this)"> Emily Rossum</div>
</html>
는 null
하지만 로컬 var에가요 이 함수의 iable은 tst2
과 같이 중첩 된 함수에서 볼 수 있어야합니다.
tst1
및 tst2
이 반환 된 후에도 함수가 나중에 호출되기 때문에 닫힌 상태에서 읽었습니다. 두 함수가 모두 닫히지는 않았습니까? 그렇다면 부모 함수의 변수가 중첩 된 함수에서 볼 수 있어야합니다.)
... 난 당신이 그것을 복사 할 때 유 액세스 할 수 있습니다 알고 있었다 때 상태 부모 함수의 반환 된 후에도 액세스 할 중첩 된 저장되어 있어야합니다 .. 부모 함수에서 __references__ (나는 'this' 포함하여 같음) 중첩 된 액세스 할 수 있어야합니다. –
@VivekChandra It 's 왜냐하면 모든 함수는'this'를 가지고 있기 때문에 항상 저장된 함수가 아니라 현재 함수의'this'를 요청할 것입니다. 어떤 지역에서도 마찬가지입니다. outer와 inner 함수가 동일한 이름의 locals를 가지면 당신은 바깥쪽에 접근 할 수 없다. – JaredPar
ur 이전 코멘트의 후반 부분은 나의 의심을 맑게했다. .. 고마워 .. –