利用闭包,编写一个atm存取款函数,要求外层函数输入的参数是账户余额,内层函数进行的功能
时间: 2024-11-25 16:31:07 浏览: 16
当我们在JavaScript中利用闭包的概念编写ATM模拟程序时,我们可以创建一个外部函数`createAtmAccount`,它接收账户初始余额作为参数,并返回一个新的匿名函数`withdraw`和`deposit`,分别用于存取款操作。由于这两个操作都依赖于传入的初始余额,所以它们形成了一个闭包环境。
```javascript
function createAtmAccount(initialBalance) {
// 创建一个闭包,内部函数可以访问外部变量initialBalance
return {
withdraw: function(amount) {
if (amount <= initialBalance) {
initialBalance -= amount;
console.log(`成功提取${amount}元,当前余额:${initialBalance}`);
} else {
console.log('余额不足');
}
},
deposit: function(amount) {
initialBalance += amount;
console.log(`成功存款${amount}元,当前余额:${initialBalance}`);
}
};
}
// 使用闭包
const myAtm = createAtmAccount(1000);
myAtm.withdraw(500); // 输出 "成功提取500元,当前余额:500"
myAtm.deposit(200); // 输出 "成功存款200元,当前余额:700"
```
在这个例子中,`withdraw`和`deposit`函数形成了闭包,因为它们都能访问到`initialBalance`这个外部作用域的变量。每当对账户进行存取款操作时,都会更新并保持账户的实时状态。
阅读全文