我从远方开始。我写了一个计算器,直到某一点,除以时,我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 一定是一个数字。