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>