code: function IfNode(aNode, parent, scope, owner, reverseWalker) {
      this.aNode = aNode;
      this.owner = owner;
      this.scope = scope;
      this.parent = parent;
      this.parentComponent = parent.nodeType === NodeType.CMPT
          ? parent
          : parent.parentComponent;
  
      this.id = guid++;
      this.children = [];
  
      // #[begin] reverse
      if (reverseWalker) {
          if (evalExpr(this.aNode.directives['if'].value, this.scope, this.owner)) { // eslint-disable-line dot-notation
              this.elseIndex = -1;
              this.children[0] = createReverseNode(
                  this.aNode.ifRinsed,
                  this,
                  this.scope,
                  this.owner,
                  reverseWalker
              );
          }
          else {
              var me = this;
              each(aNode.elses, function (elseANode, index) {
                  var elif = elseANode.directives.elif;
  
                  if (!elif || elif && evalExpr(elif.value, me.scope, me.owner)) {
                      me.elseIndex = index;
                      me.children[0] = createReverseNode(
                          elseANode,
                          me,
                          me.scope,
                          me.owner,
                          reverseWalker
                      );
                      return false;
                  }
              });
          }
  
          this._create();
          insertBefore(this.el, reverseWalker.target, reverseWalker.current);
      }
      // #[end]
  }
docs: if 指令节点类
  
  @class
  @param {Object} aNode 抽象节点
  @param {Node} parent 父亲节点
  @param {Model} scope 所属数据环境
  @param {Component} owner 所属组件环境
  @param {DOMChildrenWalker?} reverseWalker 子元素遍历对象