如何在变量中加号

Twi*_*wix 5 javascript variables

我想计算两个数字,非常简单.

但是有没有办法让运算符变量然后进行计算?

var x = 5;
var y = 5;
var p = '+';
var z = x + p + y;

$(".button").click(function() {
  alert(z);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
Run Code Online (Sandbox Code Playgroud)

Sal*_*n A 15

eval尽可能避免.对于此示例,一个简单的switch...case语句就足够了:

var x = 5;
var y = 5;
var z;
var p = "+";
switch (p) {
    case "+":
        z = x + y;
        break;
    case "-":
        z = x - y;
        break;
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用功能图:

var fnlist = {
    "+": function(a, b) { return a + b; },
    "-": function(a, b) { return a - b; }
}
var x = 5;
var y = 5;
var p = "+";
var z = fnlist[p](x, y);
Run Code Online (Sandbox Code Playgroud)


Sid*_*idd 7

或者在要添加变量的字符串上使用parseInt:

	var x = 5;
	var y = 5;
	var p = '-';
	var z = x + parseInt(p + y);

$(".button").click(function(){
  alert(z);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
Run Code Online (Sandbox Code Playgroud)


Mic*_*ski 3

您正在寻找eval函数:

	var x = 5;
	var y = 5;
	var p = '+';
	var z = x + p + y;

$(".button").click(function(){
  alert(eval(z));
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
Run Code Online (Sandbox Code Playgroud)

但是,您必须记住,使用eval函数有潜在的风险。例如,如果使用不当,可能会导致注入攻击。调试也可能更加困难。我建议阅读这个问题

  • @Twix - 请记住,使用 `eval` 会带来一些警告 - 该函数将尝试执行它提供的 **任何** JS 代码。请注意通过验证变量是否包含您可以“信任”的值/运算符来确保您只执行您想要执行的代码。想象一下,如果其中一个变量包含类似“alert('gottcha!')”的内容 (3认同)