在上一题的根底上将计算器的外围逻辑提取进去,封装一个框架无关的计算器模块,并革新你的计算器利用。
限度
- 你不能够应用
eval()
函数来执行计算 - 你不能够应用
new Function('...')
函数来执行计算
用例
在上一题的根底上减少一些边界状况的解决:
- 用户能够看到显示屏显示以后输出的数字或最初一次操作的后果。
- 用户能够看到一个蕴含数字 0-9、操作符 —— ‘+’、’-‘、’*’、’/’ 和 ‘=’ 按钮的输入板,一个 ‘AC’ 按钮(用于革除所有)。
- 用户能够通过点击输入板上的数字来输出最多八位数的数字序列,任何超过 8 位的数字的输出都将被疏忽。
- 用户能够点击 ‘AC’ 按钮来革除所有的外部工作区域,并将显示值设为 0。
- 初始值为 0,输出操作符则以 0 为操作数,否则按支出的数字作为操作数;
- 最初输出等号后,将计算结果作为下一轮计算的初始值;
- 以后操作数为 0 时,再反复输出 0 时须要疏忽,避免出现 00000123 这样的显示;
- 临时不反对数字正负符号输出,所有操作符号都以最初输出为准;
例如:当初是 3 +,再输出减号变为 3 – - 如果上一次输出的是操作符,当初输出等号反对主动去掉多余的操作符再进行计算。
脚手架
class Calculator {
// 接管计算器输出
press() {}
/**
* 计算以后输出的后果
* @return number
*/
compute() {}
/**
* 显示以后的输出值
*
* @return string
*/
display() {}
}
const calculator = new Calculator()
// 以下 press 入参只是范例,能够自行定义
calculator.press('3').press('+').press('4').press('×').press(5)
calculator.display() // 3 + 4 * 5
calculator.compute() // 23
ps:以上只是参考范例,大家能够自行封装扩大。后续会减少操作符和操作数的反对,有条件的能够思考如何封装可扩大的插件化的计算器模块,另外有趣味的能够尝试应用 TS 来编写。
https://codepen.io/zhbhun/pen…