Vue/JS 实战:三元表达式简化代码,告别多层 if 嵌套
·
Hi,我是前端人类学!
在 Vue 开发和日常 JS 编写中,我们经常遇到条件判断渲染、变量赋值的场景,新手最容易写出多层嵌套的if-else,不仅代码臃肿、可读性差,还容易出错。
其实三元表达式是极简代码的神器,一行就能替代多层 if 判断,在 Vue 模板、JS 逻辑中都能无缝使用。本文带你从基础到实战,彻底掌握三元表达式的简化技巧!
文章目录
一、什么是三元表达式?
三元表达式是 JavaScript 中唯一有三个操作数的运算符,语法:
条件 ? 条件为真时执行 : 条件为假时执行
核心作用:简化简单的条件判断,替代单行 if-else,让代码更简洁。
二、基础对比:if VS 三元表达式
先看最基础的场景,直观感受简化效果:
1. 变量赋值场景
// 臃肿写法:多层if判断
let statusText;
if (user.age >= 18) {
statusText = "已成年";
} else {
statusText = "未成年";
}
// 简化写法:三元表达式
let statusText = user.age >= 18 ? "已成年" : "未成年";
2. Vue 模板渲染
Vue 中不能直接写 if 语句,用三元表达式一行搞定渲染:
<!-- 繁琐:模板只能用v-if/v-else,代码冗余 -->
<p v-if="isLogin">欢迎回来</p>
<p v-else">请先登录</p>
<!-- 极简:三元表达式 -->
<p>{{ isLogin ? '欢迎回来' : '请先登录' }}</p>
三、进阶:多条件判断,替代多层 if-else
很多人觉得三元表达式只能处理单条件,其实嵌套三元表达式可以完美替代多层 if-else if-else,代码更紧凑!
场景:根据分数判断等级(多层 if)
// 多层if嵌套,代码冗长
let level;
if (score >= 90) {
level = "优秀";
} else if (score >= 60) {
level = "及格";
} else {
level = "不及格";
}
简化:三元表达式一行搞定
// 嵌套三元表达式,逻辑清晰,代码极简
let level = score >= 90 ? "优秀" : score >= 60 ? "及格" : "不及格";
优势:去掉了大括号、变量声明,一行代码完成所有条件判断。
四、Vue 实战高频用法
在 Vue 项目中,三元表达式是模板渲染、样式绑定、类名绑定的必备技巧:
1. 动态类名绑定(最常用)
<template>
<!-- 单行三元表达式,替代v-if重复写标签 -->
<div :class="isActive ? 'active-class' : 'default-class'">按钮</div>
</template>
2. 动态样式绑定
<div :style="{ color: status === 'success' ? 'green' : 'red' }">
{{ statusText }}
</div>
3. 列表渲染 + 条件判断
配合v-for使用,简化渲染逻辑:
<template>
<div v-for="item in list" :key="item.id">
{{ item.status === 1 ? '已完成' : item.status === 2 ? '进行中' : '未开始' }}
</div>
</template>
4. Vue3 Setup 语法糖中使用
// Vue3 组合式API
const isLogin = ref(false)
const tip = computed(() => isLogin.value ? '欢迎用户' : '请登录')
五、三元表达式 + 逻辑运算符,极致简化
结合 && / || 运算符,能进一步简化单分支判断:
1. 替代只有 if 的判断
// 原写法
if (user.vip) {
showVipIcon = true;
}
// 简化:三元表达式
showVipIcon = user.vip ? true : false;
// 极致简化:逻辑运算符
showVipIcon = !!user.vip;
2. 默认值赋值
// 常规三元
let name = user.name ? user.name : "未知用户";
// ES6简化(||运算符)
let name = user.name || "未知用户";
六、重要原则:什么时候用?什么时候不用?
推荐使用场景
- 简单的变量赋值、渲染文本
- Vue 模板中动态类名 / 样式
- 2~3 层的简单条件判断
- 代码需要一行极简实现
不推荐使用场景
- 超过 3 层的嵌套(可读性会变差)
- 条件内部需要执行多行代码 / 复杂逻辑
- 团队协作中,新手难以理解的深层嵌套
最佳实践:简单判断用三元,复杂逻辑用 if/switch,兼顾简洁和可读性!
七、完整 Vue 实战示例
<template>
<div class="user-card">
<!-- 三元表达式渲染文本 -->
<h3>{{ userInfo.name || '未设置昵称' }}</h3>
<p>{{ userInfo.age >= 18 ? '成年' : '未成年' }}</p>
<!-- 三元表达式动态类名 -->
<span :class="userInfo.vip ? 'vip-tag' : 'normal-tag'">
{{ userInfo.vip ? 'VIP会员' : '普通用户' }}
</span>
</div>
</template>
<script setup>
import { ref } from 'vue'
const userInfo = ref({
name: '',
age: 20,
vip: false
})
</script>
三元表达式是 Vue/JS 简化代码的核心技巧,能完美替代单层 / 双层 if 判断,在 Vue 模板中更是无可替代。
用好它,能让你的代码:
- 行数大幅减少
- 可读性更高
- 开发效率提升
- 告别臃肿的多层 if 嵌套
建议大家在日常开发中,优先用三元表达式处理简单条件,让代码更优雅!
更多推荐


所有评论(0)