我需要评估以下表达式的结果:
startCell = 50
size = 9
cnt = 1
var res = startCell + (size * cnt) + cnt
但如果我提醒res
,我会得到 591。我应该得到的是 60。我试过这个:
var res = eval(startCell + (size * cnt) + cnt);
但它仍然给我 591。为什么会这样?
我需要评估以下表达式的结果:
startCell = 50
size = 9
cnt = 1
var res = startCell + (size * cnt) + cnt
但如果我提醒res
,我会得到 591。我应该得到的是 60。我试过这个:
var res = eval(startCell + (size * cnt) + cnt);
但它仍然给我 591。为什么会这样?
确保您添加整数而不是连接一些字符串
var res = parseInt(startCell)+(parseInt(size)*parseInt(cnt))+parseInt(cnt);
您发布的代码没有任何问题。证明:http: //jsfiddle.net/Q8M7S/
您的问题的原因在于我们看不到的代码。有些东西正在cnt
变成一个字符串,但startCell
仍然size
是数字。如果它们都是字符串,你会得到5091
而不是:http 591
: //jsfiddle.net/Q8M7S/1/
可能cnt
是被初始化为一个字符串:
startCell = 50
size = 9
cnt = "1"
或者它可以被初始化为一个数值,然后通过 JavaScript 的类型强制转换为一个字符串:
cnt = 1
cnt += ""
它可能发生的方式有很多种,没有人不看代码就无法确定。我建议您查找cnt
在初始化时间和使用时间之间修改的每一行。
另外,请注意eval
. 使用不当有潜在的危险,而且对性能很不利。eval
在任何技能水平上,您都应该尽可能避免使用。