JavaScript中是否存在类似if let的变量声明与判断合一语法?
JavaScript中替代
if let的简洁语法方案 目前JavaScript原生尚未支持类似Rust、Swift等语言的if let语法,但有几种简洁写法可以避免额外的undefined/null检查步骤:
1. 可选链+空值合并(ES2020+)
适合直接获取结果的场景,利用可选链?.安全访问属性,空值合并??提供默认值:
// 直接获取结果,不存在则返回空字符串 const result = document.querySelector('[class="-img _glyph"]')?.innerText ?? ''; // 需要执行后续逻辑时,结合逻辑与+立即执行函数 const text = document.querySelector('[class="-img _glyph"]'); text && (() => { result = text.innerText; // do some other work })();
优先缓存DOM查询结果,避免重复查找提升性能。
2. 立即执行函数表达式(IIFE)
把变量声明和判断封装在局部作用域内,避免污染外部作用域,逻辑和原代码一致但更严谨:
let result; (() => { const text = document.querySelector('[class="-img _glyph"]'); if (text) { result = text.innerText; // do some other work } })();
3. 短路求值(逻辑与运算符)
适合逻辑简单的场景,利用&&的短路特性,仅当元素存在时执行后续代码:
let result; const text = document.querySelector('[class="-img _glyph"]'); text && (result = text.innerText, /* 这里写其他逻辑代码 */);
注意:逗号运算符可串联多个语句,但可读性一般,仅推荐用于简单逻辑。
补充说明:你提到的早期语法提案确实没有推进到ECMAScript标准中,截至2024年,JavaScript仍未原生支持if let模式的语法,相关提案暂无明确落地计划。
内容的提问来源于stack exchange,提问作者user2875404
相关产品推荐
相关产品推荐

