JavaScript代码中变量t显示undefined的问题排查与修复
问题分析与修复方案
核心问题
- 变量未声明:代码中直接使用变量
t却未通过let/const声明,既不符合JS语法规范,还可能引发意外的全局变量污染。 - 条件判断逻辑矛盾:第二个
if的判断条件bill[x] <= 50 && bill[x] >= 300完全不成立——没有任何数值能同时满足“小于等于50”和“大于等于300”,导致当账单金额不在50-300区间时,t从未被赋值,最终输出undefined。
修复后的代码
const bill = [22, 295, 176, 440, 37, 105, 10, 1100, 86, 52]; const tipstxt = []; const totalstxt = []; for (let x = 0; x < bill.length; x++) { let t; // 声明变量t if (bill[x] >= 50 && bill[x] <= 300) { t = 0.15 * bill[x]; } else { // 用else替代矛盾的第二个if t = 0.2 * bill[x]; } tipstxt.push(t); } console.log(tipstxt);
补充优化(可选)
用数组map方法结合三元运算符简化逻辑,代码更简洁:
const bill = [22, 295, 176, 440, 37, 105, 10, 1100, 86, 52]; const tipstxt = bill.map(amount => amount >= 50 && amount <= 300 ? 0.15 * amount : 0.2 * amount ); console.log(tipstxt);
内容的提问来源于stack exchange,提问作者kanymus
相关产品推荐
相关产品推荐

