我有一个问题,我在for循环内部使用了递归:
function func(node) {
for(var i = 0; i < node.children.length; i++) {
func(node.children[i]);
}
}
很明显,因为JavaScript没有块级作用域,所以每次调用函数时都会修改相同的i变量。有什么最好的解决方法?假设使用常规的EcmaScript 3,不能使用JavaScript 1.7中的"let"。
我知道这个问题以前已经被问过了,但是其他问题似乎没有展示递归,它们只展示了可以使用闭包的一个函数调用。
node
的示例数据吗?JavaScript将变量作用于包含它的function
或对象字面量中,因此每个递归调用到func
都应该获取自己的i
。 - Stoivefunction func(node) {for(var i = 0; i < node.children.length; i++) {if(node.nodeType === 1) node.style.border="1px solid orange";func(node.children[i]);}} func(document.body);
- user113716