微信小程序 eval 替代方案 (简化版)

如果觉得代码库太大,可以参考我以前写的表达式分析算法的文章

https://blog.csdn.net/jiexiaopei_2004/article/details/41546673



项目地址: https://github.com/mengjieli/WeChatGame

目前支持的功能
1. 数据类型有 number,bool,string 以及 变量
2. 运算符有 + - * / % ! << >> >>> > < >= <= == === !== != & ~ ^ | && || ?: ()

使用非常简单,把 Binding.js copy 到项目里面即可。
如果真机跑不通没有 window 函数,可以把 Binding.js 最后的 window.binding = binding 改成 wx.binding = binding,然后使用改成 wx.binding.eval

用法:

  1. simple expr
console.log(binding.eval("(1 + 2) * 4 / 2")); //console 6



2. expr with var

var v0 = 3;
console.log(binding.eval("$0 * 4",[v0])); //console 12



3. expr with var and function

var v0 = 3;
var v1 = 6;
console.log(binding.eval("Math.sqrt($0 * 3 * $1 * 6)",[v0,v1])); //console 18



4. expr with var and self-define function

var v0 = 9;
var addFunction = function(a,b) {
    return a + b;
}
console.log(binding.eval("add(Math.sqrt($0), 2)",[v0],{add:addFunction})); //console 5



5. 3 op expr

console.log(binding.eval("3 > 2 ? true : false")); //console true


评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值