我从远方开始。我写了一个计算器,直到某一点,除以时,我0输出Error(应该),但由于某种原因后来它停止工作,当除以时0,一切都冻结了,据我所知,有一个硬内存泄漏。这是负责数学部分的代码:
$('.result').click(function(){
console.log('In')
if(inputLength != 0){
try {
let result = eval($('.input-field').text());
$('.input-field').html('').append(+result.toFixed(10));
inputLength = countDigits(result);
}catch(e) {
$('.input-field').html('Error');
inputLength = 5;
} // end catch
}
}); // end click
原理是这样的。有一个字段input-field,当单击键时,会添加字符(例如5+2,等)。当您单击键result时,它js会读取字段的值input-field并执行代码,这要归功于eval(是,是eval is evil,但仍然:D)还有一个,try{}catch{}当您输入时会5+显示错误。问题本身:为什么除以零时会发生某种游戏?
PS:这是计算器本身
Dmitry Gorny在评论中给出了正确答案。
函数
countDigits(n)来了"Infinity"又挂了,你需要添加一个异常或检查,以便 n 一定是一个数字。