emmm,一个非常偷懒的自定义函数方式,估计没人这样做过。
话不多说,先贴代码为敬。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>函数替换规则demo</title>
</head>
<body>
<p>定义函数:avg(i,j)为:(i+j)/2</p>
<p>用户调用函数:avg(a,b)</p>
<button onclick="myFunction()">替换</button>
<p id="demo">avg(a,b)</p>
<script>
function myFunction() {
//函数定义
var str = "avg(i,j)";
var def = "(i+j)/2";
//正则规则
var defname = str.match(/[A-z]+/);
var pams = str.match(/\(([^)]*)\)/);
var pam = pams[1].match(/[A-z]+/g);
//var rule[defname] = def;
//这里应该对函数名及对应定义进行存储...但是我不会
//调用函数
var inputstr = "avg(a,b)";
//正则规则
var inputpams = inputstr.match(/\(([^)]*)\)/);
var inputpam = inputpams[1].match(/[A-z]+/g);
var result = def;
for (var i = 0; i<pam.length; i++)
{
var tmp = result;
var result = tmp.replace(new RegExp(pam[i],'g'),inputpam[i]);
}
document.getElementById("demo").innerHTML =
"函数名:" + defname
+ "<br>参数个数:" + pam.length
+ "<br>形参:" + pam
+ "<br>使用替换规则:" + result;
}
</script>
</body>
</html>
网友评论