使用javascript进行某些类型的DOM操作是否需要全局变量?

使用javascript进行某些类型的DOM操作是否需要全局变量?,dom,Dom,在下面的示例代码中,我想知道为什么名为child的变量必须是全局变量(无变量)才能使代码工作。我还想知道下面的代码是否因为有一个全局变量而被认为是不好的做法,以及下面的代码的更好的表现形式是什么样子的。谢谢 <!DOCTYPE html> <meta charset="UTF-8"> <title>dom</title> <div class="product"> <h2> Product Name </h2>

在下面的示例代码中,我想知道为什么名为child的变量必须是全局变量(无变量)才能使代码工作。我还想知道下面的代码是否因为有一个全局变量而被认为是不好的做法,以及下面的代码的更好的表现形式是什么样子的。谢谢

<!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>

多姆
品名
说明

var products=document.getElementsByClassName(“产品”), 儿童;//为什么var会破坏代码? 对于(i=0;i
您已经有了一个
var
,因为child前面有一个逗号。因此,添加
var
将使您

var product, var child
这是违法的

child
不是全局的,因为中的
var

var product, child
适用于
var
之后的整个变量列表。(嗯,
子项
无论如何都是全局的,因为它没有嵌套在
函数中
。但这与
var
var
无关)

如果您坚持使用
var
两次,请编写

var product = ... ;
var child;

好的,谢谢。这不是我的密码。我是从一本书中读到的,对此很好奇。我被语法弄糊涂了