0

我有以下代码:

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

这样做时,我访问了 parentNode 两次。我想知道这样做是否可能/正确:

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

3 回答 3

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
于 2013-11-01T18:32:05.670 回答
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) {
    ...
}

但是正如你所看到的,它与我之前建议的并没有太大的不同,所以你并没有真正用它来购买你自己,而且它也可能给阅读你的代码的任何人(甚至是你!)造成混淆,因为它是一个不熟悉的结构。

于 2013-11-01T18:30:20.733 回答
0

你总是可以做这样的事情:

var parent = images[i].parentNode;
if (parent) {
    // Do Stuff
}
于 2013-11-01T18:33:29.933 回答