Область действия или видимость указателя this
, который называется w.r.t div, ограничивается функцией, для которой он предназначен, а не функциями NESTED.
Но все локальные переменные этой функции видны во вложенных функциях - почему это происходит ?? .. получение указателя this
посредством вызова функции с <function name>(this)
на div - не значит ли это даже указанный this
также является локальной переменной в <function name>
Короче, вот код, который смутил меня ..
<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>
В tst1 function
переменная this
равна null
, но локальная переменная этой функции должна быть видна во вложенных функциях, как показано в tst2
.
Я читал о замыканиях, так как функция вызывается позже - через setTimeout
даже после того, как возвращаются tst1
и tst2
- разве функции не являются замыканиями? (Если это так, то, что переменная в родительской функции должна быть видна во вложенной функции, не так ли?)