当我设置setInterval
这样的设置时:
var intervalTime = 200;
var i = 0;
var elements = document.getElementsByTagName('elements');
var elementsLength = elements.length;
var enterElements = setInterval(function(){
elements[i].style.transform = 'translate(0,0)';
i++;
if (i > (elementsLength - 1)) {
clearInterval(enterElements);
}
},intervalTime);
有效!
但我认为functions
有范围?
我理解intervalTime
应该正确解析,但setInterval()
内的匿名函数如何访问
elements
i
elementsLength
我知道当我编写一个命名函数时,该函数无法访问在其自身之外声明的变量。
的匿名函数与命名函数不同吗?
答案 0 :(得分:1)
我知道当我编写一个命名函数时,该函数无法访问在其自身之外声明的变量。
你怎么知道的?见MDN:
但是,函数可以访问在定义范围内定义的所有变量和函数。 换句话说,全局范围中定义的函数可以访问全局范围中定义的所有变量。在另一个函数内定义的函数也可以访问其父函数中定义的所有变量以及任何其他变量。父函数有权访问。