使用特定字符串调用JavaScript函数
Calling JavaScript function using specific string
是否可以使用特定字符串执行JavaScript函数?
我正在通过编程一个后缀符号计算器来学习JavaScript。
示例:如果我写我的输入框"5!",我希望执行factorial(5)
,或者如果我写3nCr5
,执行ncr(3,5)
等。
因为你的目标是学习Javascript,你用Javascript执行字符串解析的方式是使用正则表达式,顺便说一下,它在整个Javascript世界中是一个单独的主题。
例如,"5!"
转换为factorial(5)
可以通过以下操作实现:
var result ="5!".replace(/(['d]+)(!)/g,
function(match,number,functionType){
if (functionType === "!"){
return parseInt(number) *2; // perform your math operation here!
}
});
console.log(result);
Mozilla Developer网站有很多有用的文档,可以指导您了解这个和其他主题。在上面的链接中,你会发现一个使用RegEx将华氏度转换为等效的摄氏度的例子,这似乎与你正在尝试的没有太大不同。
关于上面使用的正则表达式( /(['d]+)(!)/g
),它可以读作:
['d]+
匹配后面跟着 !
希望这对你有帮助!
是的,尽管对于初学者JS来说相当复杂。正则表达式是一个非常强大的工具,但我不建议初学者使用,因为它们看起来很痛苦!实际上,你必须考虑一些问题。对于初学者来说,分隔符是必要的,它可以更容易地分离各个部分并准确地读取单个函数。一个简单的空间就可以了。
然后你可以将这些部分分割成一个数组,并通过检测函数和变量的解释器函数来循环这些部分。
让你前进的东西:
var stack = Array(); /* Stack array for calculation */
var result; /* output init */
/* get string from HTML element */
var foostring = document.getElementById("htmlelementID").value; /* "5 !" */
/* split string into array using space as the separator */
var fooarray = foostring.split(" "); /* ["5","!"] */
while(i<fooarray.length)
{
/*calculation loop */
if(!isNaN(fooarray[i])) /* input is number, add to stack */
{
stack.push(Number(fooarray[i]); /* make sure we convert from string to number before storing */
}
else /*input is function, pop required variables from stack and calculate*/
{
switch(fooarray[i])
{
case "!":
var input = stack.pop();
var sum = factorial(input);
stack.push(sum);
break;
default:
console.log("Syntax Error! "+fooarray[i]);
return;
}
}
i++;
}
if(stack.length === 1)
{
alert("Result: " + stack.pop());
}
else
{
console.log("Syntax Error! Too many items on stack at complete");
}
/* math functions */
function factorial (n) {
if (n == 0 || n == 1)
return 1;
if (f[n] > 0)
return f[n];
return f[n] = factorial(n-1) * n;
}
我对后缀知之甚少,这是基于伪算法@ http://en.wikipedia.org/wiki/Reverse_Polish_notation
功能上看起来是正确的,但没有经过测试。您将需要用所需的所有其他功能扩展开关箱,但请注意我放入的示例箱的布局!使用stack pop从堆栈中删除变量,使用stack push将结果添加回堆栈,并且不要忘记在每个case结束时使用break。
欢迎来到JS!div =)
- 我需要从php调用javascript或jquery
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 使用html表单中的参数调用JavaScript函数
- 可以´t调用JavaScript中的函数
- 在按钮上调用Javascript函数
- 如何从Objective-C代码中调用javascript代码
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 可以't在Jasmine中调用Javascript函数
- 在page_load事件上调用javascript函数
- 如何在ajax中调用javascript对象的方法
- 如何使用WPF调用JavaScript对象的函数
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 从附加文本调用javascript(订单车)
- 在线程循环中调用JavaScript
- 在指定时间后多次调用Javascript中的函数
- 未调用Javascript onscroll事件
- 如何正确调用Javascript中的匿名函数
- 从字符串调用javascript函数
- 无法从活动调用 javascript 函数