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

JavaScript用三元运算符操作DOM避免空值报错的写法是否合理?

回答

现有写法的可行性与问题

你的写法确实可以实现需求,不会在元素不存在时抛出错误,元素存在时也能正确赋值,但存在两个明显缺陷:

  • 属于取巧的非标准写法,可读性极低,其他维护人员很难第一时间理解你创建临时数组的作用
  • 会产生无意义的临时数组内存开销,虽然量级极小,但属于完全不必要的冗余操作

更优的解决方案

1. 标准if判断(最推荐)

逻辑最清晰,没有任何冗余,是工业界的通用写法:

if (submitCodeContent) {
  submitCodeContent.disabled = true;
  submitCodeContent.style.backgroundColor = "#886A6C";
}

2. 可选链简洁写法

如果你偏好更短的代码,且项目兼容ES2020+语法(所有现代浏览器均支持),可以用可选链操作符:

// 分开写单个属性
submitCodeContent?.disabled = true;
submitCodeContent?.style.backgroundColor = "#886A6C";

// 合并为单行用逗号表达式,不需要创建临时数组
submitCodeContent && (
  submitCodeContent.disabled = true,
  submitCodeContent.style.backgroundColor = "#886A6C"
);

3. 批量设置工具函数(多属性赋值场景复用)

如果后续有大量类似的元素属性赋值需求,可以封装通用工具函数提升复用性:

function setElementProps(el, commonProps = {}, styleProps = {}) {
  if (!el) return;
  // 赋值通用属性
  Object.entries(commonProps).forEach(([prop, value]) => {
    el[prop] = value;
  });
  // 赋值样式属性
  Object.entries(styleProps).forEach(([prop, value]) => {
    el.style[prop] = value;
  });
}

// 调用示例
setElementProps(
  submitCodeContent,
  { disabled: true },
  { backgroundColor: "#886A6C" }
);

内容的提问来源于stack exchange,提问作者Tadese Alemayheu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:09:04