babel代码解析成抽象语法树:在线工具
FunctionDeclaration(函数声明)
function a() {}
FunctionExpression(函数表达式)
var a = function() {}
ArrowFunctionExpression(箭头函数表达式)
()=>{}(此处可以思考:为什么没有箭头函数声明,以及Declaration和Expression的区别)
AwaitExpression(await表达式)
async function a () { await b() }
CallExpression(调用表达式)
a()
MemberExpression(成员表达式)
a.b
VariableDeclarator(变量声明)
var,const,let(var,const,let用Node中的kind区分)
Identifier(变量标识符)
var a(这里a是一个Identifier)
NumericLiteral(数字字面量)
var a = 1
StringLiteral(字符串字面量)
var a = ‘a’
BooleanLiteral(布尔值字面量)
var a = true
NullLiteral(null字面量)
var a = null(此处可以思考:为什么没有undefined字面量)
BlockStatement(块)
{}
ArrayExpression(数组表达式)
[]
ObjectExpression(对象表达式)
var a = {}
SpreadElement(扩展运算符)
{…a},[…a]
ObjectProperty(对象属性)
{a:1}(这里的a:1是一个ObjectProperty)
ObjectMethod(函数属性)
{a(){}}
ExpressionStatement(表达式语句)
a()
IfStatement(if)
if () {}
ForStatement(for)
for (;😉{}
ForInStatement(for in)
for (a in b) {}
ForOfStatement(for of)
for (a of b) {}
ImportDeclaration(import声明)
import ‘a’
ImportDefaultSpecifier(import default说明符)
import a from ‘a’
ImportSpecifier(import说明符)
import {a} from ‘a’
NewExpression(new表达式)
new A()
ClassDeclaration(class声明)
class A {}
ClassBody(class body)
class A {}(类的内部)