如何在三元运算中用函数设置值?取款逻辑代码异常求助
问题分析与解决
问题根源
你写的代码里,三元运算符的else分支是把函数本身赋值给了newWithdrawTotal,根本没执行这个函数。所以当newWithdrawAmount > previousBalanceTotal时,newWithdrawTotal变成了一个函数对象,既弹不出提示框,也不会返回预期的数值。
修复方案
给你两种简单的修复方式:
方式一:立即执行else分支的函数
在函数定义末尾加(),让它立刻执行,这样就能触发弹窗并返回正确值:
const newWithdrawTotal = (newWithdrawAmount < previousBalanceTotal) ? (newWithdrawAmount + previousWithdrawTotal) : (function () { console.log(previousWithdrawTotal); alert('你不能取出超过账户余额的金额'); return previousWithdrawTotal; })(); // 加()让函数立即执行 console.log(newWithdrawTotal);
方式二:去掉冗余函数,直接写逻辑
其实没必要用函数包裹,改用if-else语句更直观,代码可读性也更高:
let newWithdrawTotal; // 因为要根据条件赋值,改用let声明 if (newWithdrawAmount < previousBalanceTotal) { newWithdrawTotal = newWithdrawAmount + previousWithdrawTotal; } else { console.log(previousWithdrawTotal); alert('你不能取出超过账户余额的金额'); newWithdrawTotal = previousWithdrawTotal; } console.log(newWithdrawTotal);
内容的提问来源于stack exchange,提问作者Umme Habiba
相关产品推荐
相关产品推荐

