如何将if else语句转为三元运算符?如何改写指定JavaScript代码为ES6版本?
如何把if-else转换成三元运算符 & 你的JavaScript代码ES6改写方案
嘿,我来帮你搞定这两个问题!先聊聊怎么把if-else转换成三元运算符,再给你把代码改成更简洁的ES6风格。
一、if-else转三元运算符的思路
三元运算符是JavaScript里替代简单if-else的简洁写法,核心格式是:
condition ? exprWhenTrue : exprWhenFalse
简单来说,就是把if(条件){...}else{...}的逻辑压缩成一行,条件为真时执行exprWhenTrue,否则执行exprWhenFalse。
- 单层if-else场景:直接对应转换就行,比如:
// 原if-else代码 let result; if (age >= 18) { result = '成年人'; } else { result = '未成年人'; } // 转三元运算符 const result = age >= 18 ? '成年人' : '未成年人'; - 嵌套if-else场景:可以嵌套三元,但要注意不要嵌套太多层(否则代码会变得晦涩难读)。比如你代码里的嵌套逻辑,转三元的话可以这么写:
不过这种场景下,直接用简单的判断逻辑可能比嵌套三元更易维护。isUserFound = allUser[currentUser].email === email; passwordCorrect = isUserFound ? (allUser[currentUser].password === password) : false; if (isUserFound) break;
二、你的代码改写成ES6版本
ES6的对象解构、简洁赋值等特性能让你的代码更清爽。我给你改写后的版本:
// 提前声明变量(如果之前没定义的话) let isUserFound = false; let passwordCorrect = false; // 用对象解构直接取出当前用户的邮箱和密码,比原写法更简洁直观 const { email: userEmail, password: userPassword } = allUser[currentUser]; if (userEmail === email) { isUserFound = true; // 直接用比较结果赋值,因为布尔比较本身就返回true/false,不用多余的if-else passwordCorrect = userPassword === password; break; } // 因为isUserFound初始值已经是false,当邮箱不匹配时无需额外赋值,else分支可以省略
如果想更紧凑一点,还可以用ES6的数组解构一次性给两个变量赋值:
const { email: userEmail, password: userPassword } = allUser[currentUser]; if (userEmail === email) { // 数组解构同时赋值两个变量 [isUserFound, passwordCorrect] = [true, userPassword === password]; break; } else { isUserFound = false; }
内容的提问来源于stack exchange,提问作者Sm Ashhar
相关产品推荐
相关产品推荐

