本文目录导读:

我来详细讲解条件函数的编写方法,主要包括if、switch和三元运算符等几种方式。
if-else 条件判断
基本语法
// 最简单的if
if (条件) {
// 条件为真时执行
}
// if-else
if (条件) {
// 条件为真时执行
} else {
// 条件为假时执行
}
// if-else if-else
if (条件1) {
// 条件1为真
} else if (条件2) {
// 条件1为假,条件2为真
} else {
// 所有条件都为假
}
实际示例
function checkAge(age) {
if (age < 0) {
return "年龄不能为负数";
} else if (age < 18) {
return "未成年";
} else if (age < 60) {
return "成年人";
} else {
return "老年人";
}
}
switch 条件判断
function getDayName(dayNumber) {
let dayName;
switch (dayNumber) {
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
case 3:
dayName = "星期三";
break;
case 4:
dayName = "星期四";
break;
case 5:
dayName = "星期五";
break;
case 6:
dayName = "星期六";
break;
case 7:
dayName = "星期日";
break;
default:
dayName = "无效的日期";
}
return dayName;
}
三元运算符(简化条件函数)
// 语法:条件 ? 真值 : 假值
function isAdult(age) {
return age >= 18 ? "成年人" : "未成年";
}
// 嵌套三元运算符(不推荐过多嵌套)
function getGrade(score) {
return score >= 90 ? "优秀" :
score >= 80 ? "良好" :
score >= 70 ? "中等" :
score >= 60 ? "及格" : "不及格";
}
逻辑运算符简化条件
// 短路运算
function getName(name) {
return name || "未知"; // 如果name为假值,返回"未知"
}
function canAccess(hasPermission, isAdmin) {
return hasPermission && isAdmin; // 两个条件都需要为true
}
使用对象进行条件判断(推荐)
// 使用对象替代复杂的 if-else
function getDiscount(type) {
const discounts = {
'vip': 0.8,
'member': 0.9,
'new_user': 0.95,
'normal': 1
};
return discounts[type] || 1; // 默认无折扣
}
// 更复杂的映射
function processOrder(status) {
const handlers = {
'pending': () => { console.log('等待处理'); return '处理中'; },
'processing': () => { console.log('正在处理'); return '已完成'; },
'completed': () => { console.log('已完成'); return '已发货'; },
'cancelled': () => { console.log('已取消'); return '已退款'; }
};
const handler = handlers[status];
return handler ? handler() : '未知状态';
}
实战应用示例
// 用户权限判断函数
function checkUserPermission(user) {
// 条件链
if (!user) {
return '请先登录';
}
if (user.isBanned) {
return '账号已被禁用';
}
if (!user.isVerified) {
return '请验证邮箱';
}
// 权限等级判断
const rolePermissions = {
'admin': ['create', 'read', 'update', 'delete'],
'editor': ['create', 'read', 'update'],
'viewer': ['read']
};
return {
permissions: rolePermissions[user.role] || [],
message: '验证通过'
};
}
// 价格计算函数
function calculatePrice(basePrice, options = {}) {
let finalPrice = basePrice;
// 会员折扣
if (options.isMember) {
finalPrice *= 0.9;
}
// 批量折扣
if (options.quantity >= 10) {
finalPrice *= 0.85;
} else if (options.quantity >= 5) {
finalPrice *= 0.9;
}
// 促销码
if (options.promoCode === 'SAVE20') {
finalPrice *= 0.8;
}
// 满减优惠
finalPrice = finalPrice >= 200 ? finalPrice - 30 : finalPrice;
return Math.round(finalPrice * 100) / 100;
}
条件函数的编写原则
// 1. 单一职责原则 - 一个函数只做一件事
// 不好的写法
function processUser(user) {
if (user.age < 18) { /* ... */ }
if (user.role === 'admin') { /* ... */ }
if (user.isActive) { /* ... */ }
}
// 好的写法
function checkAdult(user) {
return user.age >= 18;
}
function checkAdmin(user) {
return user.role === 'admin';
}
// 2. 尽早返回(Early Return)
function validateUser(user) {
if (!user) return '用户不存在';
if (!user.email) return '邮箱不能为空';
if (!user.password) return '密码不能为空';
return '验证通过';
}
// 3. 避免深层嵌套
// 不好的写法
function badNesting(a, b, c) {
if (a) {
if (b) {
if (c) {
return '全部满足';
}
}
}
return '不满足';
}
// 好的写法
function goodNesting(a, b, c) {
if (!a || !b || !c) return '不满足';
return '全部满足';
}
特定语言的语法
Python
def check_score(score):
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
else:
grade = 'D'
return grade
Java
public String getStatus(int code) {
if (code == 200) {
return "成功";
} else if (code == 404) {
return "未找到";
} else {
return "未知状态";
}
}
编写条件函数的关键原则:
- 保持简洁 - 避免过度嵌套
- 尽早返回 - 减少条件分支
- 使用映射 - 用对象/字典替代长if-else链
- 单一职责 - 一个函数处理一种条件判断
选择哪种方式取决于具体场景:
- 简单条件用
if-else - 多分支固定值用
switch - 简单二元选择用
三元运算符 - 复杂映射用
对象/字典
标签: 编写
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。