Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将运算符从字符串类型转换为运算符类型_Javascript_Jquery_Google Chrome Extension - Fatal编程技术网

Javascript 将运算符从字符串类型转换为运算符类型

Javascript 将运算符从字符串类型转换为运算符类型,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我想随机生成这样的东西 233+333=566 我的意思是,第一个数字、运算符和第二个数字是随机生成的 所以,我现在写了这段代码 var x = parseInt(Math.random()*1000), y = parseInt(Math.random()*1000), operators = ['+', '-', '*', '/'], operatorNum = parseInt(Math.random()*4), operator = operators[o

我想随机生成这样的东西

233+333=566

我的意思是,第一个数字、运算符和第二个数字是随机生成的

所以,我现在写了这段代码

var x = parseInt(Math.random()*1000),
    y = parseInt(Math.random()*1000),
    operators = ['+', '-', '*', '/'],
    operatorNum = parseInt(Math.random()*4),
    operator = operators[operatorNum],
    result;

result = x + operator + y;
但这给了我一个类似748/264的字符串。 它没有给我生成的计算结果

我想我需要将运算符从字符串转换为运算符类型。 但是,我认为没有运算符类型

编辑

我正在构建一个Chrome扩展。根据Chrome扩展政策,我不允许使用eval功能。

评估它:

result = eval(x + operator + y);
编辑

因为不能使用eval,所以需要构建自己的数学函数。如果您实际上不需要知道它们的名称,则可以指定该数组中的四个函数,如:

myFunctions = [
    function(a, b){return a+b;}, 
    function(a, b){return a-b;}, 
    function(a, b){return a/b;}, 
    function(a, b){return a*b;}
];

然后随机选择一个,并用x和y变量作为参数调用它,就像之前一样:result=myFunctions[parseIntMath.random*4]x,y

我认为这里的解决方案是使用


在这种情况下,使用eval是安全的,但是-这是一个可以使用的函数,JavaScript中没有内置的运算符函数,但是您可以非常轻松地创建自己的函数:

var operators = {
    '+': function(a, b) {
        return a + b;
    },
    '*': function(a, b) {
        return a * b;
    },
    ....
};
然后致电相应的接线员:

operators['+'](4, 7);  // 11
但在这里,您可以使用eval并将字符串视为JavaScript代码:

eval('2 + 2');  // 4

在这里似乎是无害的,因为没有用户输入需要担心。@j08691只是引导用户了解eval的危险。在这种情况下,它是非常安全的谢谢!很抱歉,我没有提到我正在构建一个chrome扩展,我不允许以任何方式使用eval函数。@crzyonez777在这种情况下,请使用Blender的解决方案。非常感谢。但很抱歉,我没有提到我正在构建一个Chrome扩展,我不允许使用eval函数。如果我在程序中使用eval函数,Chrome会给我一个错误。不客气。嗯,我想你需要建立你自己的基本数学函数乘、除、加、减,然后使用它们。所以,最后你会得到这样的结果:result=randomChosenFunctiona,b;非常感谢你。我懂了。我需要建立自己的数学函数@搅拌机给了我提示,所以试着让它工作吧!谢谢是的,但是如果你实际上不需要知道它们的名字,你可以在数组中指定四个函数,比如:myFunctions=[function,b{returna+b;},function,b{returna-b;},function,b{returna/b;},function,b{returna*b;};。然后随机选择一个,并用x和y变量作为参数调用它,如下所示:myFunctions[parseIntMath.random*4]x,y;哦,这似乎是我的处境所需要的答案。我没有提到我正在构建一个chrome扩展,我不允许使用eval功能。所以,似乎我需要像你教我的那样构建自己的数学函数。我会像你教我的那样努力工作。我现在需要出去,所以我回来后,我会回到这个问题上来。谢谢@crzyonez777您可以通过调整CSP使eval在Chrome扩展中工作,请参阅。
eval('2 + 2');  // 4