gpt4 book ai didi

javascript - eval() 不起作用

转载 作者:行者123 更新时间:2023-12-03 02:56:06 25 4
gpt4 key购买 nike

所以我尝试构建自己的 Javascript 计算器作为练习。不幸的是,当我尝试使用 eval() 函数和“=”按钮单击将字符串转换为结果时,例如“2+2*2”,没有任何反应。这是我的代码:

var draw = document.getElementById("result");

function calc(x) {
draw.innerHTML += x;
if (x === '=') {
draw.innerHTML = eval(draw.innerHTML);
} else if (x === 'c') {
draw.innerHTML = '0';
} else if (x === 'sqrt') {
draw.innerHTML = Math.sqrt(eval(draw.innerHTML));
} else if (x === 'pow') {
draw.innerHTML = Math.pow(eval(draw.innerHTML));
}
}

最佳答案

draw.innerHTML += x;

表示如果例如你的字符串是2*2并且你调用

calc("sqrt")

抽奖内容为

 "2*2sqrt"

这不是一个有效的表达式,因此eval将会失败。如果不是操作,您可能只想连接:

 function calc(x) {
if (x === '=') {
return draw.innerHTML = eval(draw.innerHTML);
} else if (x === 'c') {
return draw.innerHTML = '0';
} else if (x === 'sqrt') {
return draw.innerHTML = Math.sqrt(eval(draw.innerHTML));
} else if (x === 'pow') {
return draw.innerHTML = Math.pow(eval(draw.innerHTML),2);
}
draw.innerHTML += x;
}

可以用一个对象作为查找表来美化它:

const result = n => eval(n),
sqrt = n => Math.sqrt(eval(n)),
pow = n => Math.pow(eval(n),2),
default = (n, add) => n + add;

function calc(in){
draw.innerHTML = ({"=":result, sqrt, pow}[in] || default)(draw.innerHTML, in);
}

关于javascript - eval() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47612261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com