在下面的示例代码中,我想知道为什么名为 child 的变量必须是全局的(没有 var )才能使代码生效。我还想知道下面的代码是否被认为是不好的做法,因为有一个全局变量以及如何更好地实现下面代码的实现再现。感谢。
<!DOCTYPE html>
<meta charset="UTF-8">
<title>dom</title>
<div class="product">
<h2> Product Name </h2>
<img src="pic.jpg" />
<p> Description </p> </div>
<script>
var products = document.getElementsByClassName("product"),
child; // how come var breaks the code ?
for ( i = 0; i < products.length; i++) {
child = products[i].firstChild;
while (child.nodeType !== 1) {
child = child.nextSibling;
}
console.log(child);
}
</script>
答案 0 :(得分:1)
您已经有var
,因为在孩子之前有一个逗号。因此添加var
会给你
var product, var child
这是非法的。
child
不是全局的,因为
var
var product, child
适用于var
之后的整个变量列表。 (好吧,child
无论如何都是全局的,因为它没有嵌套在function
中。但这与var
或var
没有关系。)
如果您坚持让var
两次,请写
var product = ... ;
var child;