2013-11-01 139 views
0

我有以下代碼:分配變量

if (images[i].parentNode) { 
var parent = images[i].parentNode; 
} 

做這件事時,我訪問parentNode兩次。我想知道是否有可能/正確的做到這一點:

if (var parent = images[i].parentNode) { 
// here I can access parent. 
} 

回答

0

簡短的回答:

龍答:你嘗試了嗎? :)你有什麼是不合法的JavaScript和解釋器不會接受它,因爲var關鍵字不被接受那裏。

如果你不想訪問parentNode兩次,只需將其分配給一個變量:

var parent = images[i].parentNode; 
if(parent) { 
    ... 
} 

不要緊,在阻斷parent定義,因爲JavaScript沒有塊級作用域。

但是,您可以,做到這一點:

if(parent = images[i].parentNode) { 
    ... 
} 

但問題是,parent將屬於全局命名空間(如果你以前沒有定義的話)。所以,你可以這樣做:

var parent; 
if(parent = images[i].parentNode) { 
    ... 
} 

但正如你所看到的,它不是從我建議早些時候所以你沒有真正買你的自我多與此非常不同的,它也容易引起混亂給任何人閱讀你的代碼(甚至你!),因爲它是一個陌生的構造。

+0

這就是說,如果在條件'var'被刪除,語法是有效的。 –

+0

@MattBall好點;我實際上正在編輯提及這一點。 :) –

0

您可以爲您的變量局部範圍:

(function(){ 
    var parent = images[i].parentNode; 
    // here I can access parent. 

    console.log(parent); //logs parent variable 
})(); 

console.log(parent); //ERROR parent not defined 
0

你總是可以做這樣的事情:

var parent = images[i].parentNode; 
if (parent) { 
    // Do Stuff 
}