我有以下代码:
if (images[i].parentNode) {
var parent = images[i].parentNode;
}
执行此操作时,我将访问parentNode两次。我想知道这样做是否可能/正确:
if (var parent = images[i].parentNode) {
// here I can access parent.
}
答案 0 :(得分: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) {
...
}
但正如你所看到的那样,它与我之前建议的并没有太大的不同,所以你并没有真正用这种方式购买自己的东西,它也容易引起任何人阅读你的代码(甚至是你!)的混淆,因为它是一个不熟悉的结构。
答案 1 :(得分: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
答案 2 :(得分:0)
您可以随时执行以下操作:
var parent = images[i].parentNode;
if (parent) {
// Do Stuff
}