0

在下面的示例代码中,我想知道为什么名为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>
4

1 回答 1

1

您已经有一个var,因为在 child 之前有一个逗号。因此添加var会给你

var product, var child

这是非法的。

child不是全局的,因为var

var product, child

适用于后面的整个变量列表var。(嗯,child无论如何都是全局的,因为它没有嵌套在 a 中function。但这与var或不无关var。)

如果你坚持要吃var两次,写

var product = ... ;
var child;
于 2012-09-01T09:01:06.607 回答