You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:10:32