2012-09-01 59 views
0

在下面的示例代碼中,我想知道爲什麼稱爲的變量必須是全局變量(無變量)才能使代碼正常工作。我也想知道下面的代碼是否被認爲是不好的做法,因爲有一個全局變量,以及如何更好地實踐下面的代碼可能看起來。謝謝。使用javascript進行某些類型的DOM操作需要全局變量嗎?

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

回答

1

你已經有一個var,因爲有孩子前的逗號。因此,加入var會給你

var product, var child 

這是非法的。

child不是全局的,因爲var

var product, child 

適用於變量以下var整個列表。 (好吧,child是全球反正,因爲它沒有嵌套在function。但是,這並不具有var或不var做)。

如果你堅持有var兩次,寫

var product = ... ; 
var child; 
+0

好, 謝謝。這不是我的代碼。我正在讀一本書,並對此感到好奇。我對語法感到困惑 – William