【问题标题】:Assign variable in IF Javascript在 IF Javascript 中分配变量
【发布时间】:2013-11-01 18:27:48
【问题描述】:

我有以下代码:

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

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

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

【问题讨论】:

    标签: javascript variable-assignment


    【解决方案1】:

    你可以为你的变量创建一个局部作用域:

    (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】:

      你总是可以这样做:

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

      【讨论】:

        【解决方案3】:

        简答:不。

        长答案:你试过了吗? :) 你所拥有的不是合法的 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) {
            ...
        }
        

        但是正如您所看到的,它与我之前的建议并没有太大的不同,因此您并没有真正用它来购买自己,而且它还可能导致任何阅读您的代码的人(甚至是您!)感到困惑,因为它是一个不熟悉的结构。

        【讨论】:

        • 也就是说,如果去掉条件中的var,则语法有效。
        • @MattBall 好点;我实际上是在编辑以提及这一点。 :)
        猜你喜欢
        • 1970-01-01
        • 2015-05-17
        • 2018-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-02
        • 2012-01-06
        相关资源
        最近更新 更多