本文目录导读:

我来详细讲解条件函数的编写方法,主要包括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 - 简单二元选择用
三元运算符 - 复杂映射用
对象/字典
标签: 编写
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播