如何知道变量是否已在Babel 6中声明

时间:2016-03-09 20:04:55

标签: babeljs

例如

var a = function() { };
var b = function() { 
  a(); // Identifier.name a - declared already
};

var b = function() { 
  a(); // Identifier.name a - NOT declared already
};

这是访客

export default function ({types: t }) {
  return {
    visitor: {
      CallExpression: function (p) {
        var nameToCheckIfDeclared = p.node.callee.name;
        // ???
      }
    }
  };
}

1 个答案:

答案 0 :(得分:2)

所有与Babel的范围相关的函数都在path.scope对象上。在这种情况下,您可以查看p.scope.hasBinding(p.node.callee.name)