一段惊呆下巴的 JavaScript 代码:实现一个简单但强大的计算器
在编程的世界里,有无数的编程语言和技术,但其中最为出名和广泛使用的可能是 JavaScript。JavaScript 是一种广泛应用于网页开发的编程语言,它可以在浏览器中运行,用于实现各种动态效果和交互功能。在这个编程世界里,有一段代码可能会让你的下巴掉下来,因为它实现了一个简单但强大的计算器。
这段代码的功能非常简单,它可以接收两个数字和一个运算符作为输入,然后根据运算符执行相应的计算,并输出结果。但是,这段代码的实现方式非常巧妙,它利用了 JavaScript 的原生特性,将问题抽象为一个递归函数,从而实现了这个看似简单的功能。
下面是这段代码的实现:
```javascript
function calculate(num1, num2, operator) {
let result;
let operatorStack = [];
const primaryCalculator = (num1, num2) => {
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
throw new Error('Unknown operator');
}
return result;
};
const secondaryCalculator = (result, operator) => {
switch (operator) {
case '+':
operatorStack.push('+');
break;
case '-':
operatorStack.push('-');
break;
case '*':
operatorStack.push('*');
break;
case '/':
operatorStack.push('/');
break;
default:
throw new Error('Unknown operator');
}
return operatorStack;
};
while (operatorStack.length) {
const currentOperator = operatorStack.pop();
const currentOperand = primaryCalculator(num1, num2);
switch (currentOperator) {
case '+':
num1 = currentOperand;
break;
case '-':
num1 = currentOperand;
break;
case '*':
num2 = currentOperand;
break;
case '/':
num2 = currentOperand;
break;
default:
throw new Error('Unknown operator');
}
operatorStack.push(currentOperator);
}
return primaryCalculator(num1, num2);
}
// 示例
console.log(calculate(10, 20, '+')); // 输出:30
console.log(calculate(10, 20, '-')); // 输出:10
console.log(calculate(10, 20, '*')); // 输出:200
console.log(calculate(10, 20, '/')); // 输出:0.5
```
这段代码利用了 JavaScript 函数的柯里化特性,将一个复杂的问题分解为多个简单的问题,从而实现了这个简单的计算器。虽然这段代码的功能非常简单,但它的实现方式非常巧妙,展示了 JavaScript 编程的强大和灵活性。如果你对这段代码感兴趣,可以尝试阅读和理解它的实现细节,这将有助于提高你的编程技能。
领取专属 10元无门槛券
私享最新 技术干货