博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Javascirpt AST] Babel Plugin -- create new CallExpression
阅读量:5459 次
发布时间:2019-06-15

本文共 855 字,大约阅读时间需要 2 分钟。

The code we want to trasform:

2 ** 3;a ** b;a **b * c;a ** b ** c;(a+1) ** (b+1);

 

transform to:

Math.pow(2, 3);Math.pow(a, b);Math.pow(a, b) * c;Math.pow(a, Math.pow(b, c));Math.pow(a+1, b+1);

 

Code:

export default function (babel) {  const { types: t } = babel;    return {    name: "ast-transform", // not required    visitor: {      BinaryExpression (path) {        console.log(t )        const isPowOpreator = path.node.operator === '**';        if(!isPowOpreator) {           return;        }                const {left, right} = path.node;        path.replaceWith(t.callExpression( // create Math.pow() node          t.memberExpression(            t.identifier('Math'),            t.identifier('pow')          ),          [left, right]  // pass in Math.pow(left, right)        ))      }    }  };}

 

 

转载于:https://www.cnblogs.com/Answer1215/p/7598195.html

你可能感兴趣的文章
Vue 源码解析:深入响应式原理(上)
查看>>
poj2318 TOYS
查看>>
012木桶绕圆滚动
查看>>
having的用法以及与where区别介绍
查看>>
责任链模式
查看>>
Python并行编程(五):线程同步之信号量
查看>>
SQLServer 日期函数大全
查看>>
Maven-pom-configuration
查看>>
火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法...
查看>>
前端兼容性问题解决方案(二)
查看>>
JVM调优(二)经验参数设置
查看>>
博弈学习笔记
查看>>
LinQ Lambda表达式用作泛型活动
查看>>
python 基础学习1
查看>>
017 Letter Combinations of a Phone Number
查看>>
今天博客正式开始使用,平时会写一些金融方面的文章,周末会写一些计算机方面的...
查看>>
amoeba读写分离
查看>>
Linux 常用命令
查看>>
客户端断开后怎么让服务器上的后台仍在运行
查看>>
windows下apache服务器开启压缩和网页缓存
查看>>