如果在javascript中用于简单的数学方程,eval()是否有害?

如果在javascript中用于简单的数学方程,eval()是否有害?,javascript,html,Javascript,Html,将eval()用于简单代码(如计算简单数学问题)是否有害: rZ1=2 rZ2=9 变量op1=[“/”]; T=document.getElementById(“T”); ans=eval(rZ1+op1+rZ2).toFixed(3); T.innerHTML=ans 不要这样认为,它工作正常-但一定要确保它不包含除白名单上的字符以外的字符(数字和算术运算符)eval的危险在于参数来源不可信。如果你自己创建参数,并且你知道它是安全的,那没关系。为什么要连接一个数组op1应为字符串。因为数组

将eval()用于简单代码(如计算简单数学问题)是否有害:

rZ1=2
rZ2=9
变量op1=[“/”];
T=document.getElementById(“T”);
ans=eval(rZ1+op1+rZ2).toFixed(3);
T.innerHTML=ans

不要这样认为,它工作正常-但一定要确保它不包含除白名单上的字符以外的字符(数字和算术运算符)
eval
的危险在于参数来源不可信。如果你自己创建参数,并且你知道它是安全的,那没关系。为什么要连接一个数组<代码>op1
应为字符串。因为数组被转换为字符串,而转换数组会生成一个字符串,其中所有元素都用逗号分隔。当有一个元素时,它和那个元素是一样的。Barmar和CertainPerformance已经涵盖了它。我会再加一点——即使你可以信任操作符的来源,尤其是操作符,我强烈支持检查操作符并用它来控制你的逻辑。因此,类似于if(op1==“/”{ans=rz1/rz2;}else if(op1==“*”{ans=rz1*rz2;}else if(op1==“%”){ans=rz1%rz2;}等等。那么你的评估就不能逃避一些意想不到的方向,可能是因为打字错误。