前端判断不等于 undefined 不等于 null 的方法

前端判断不等于 undefined 不等于 null 的方法

前端判断不等于 undefined 不等于 null 的方法

在前端开发(JavaScript/TypeScript)中,判断一个变量既不等于 undefined 也不等于 null,通常被称为判断“空值”或“有效存在”。

以下是几种常用且推荐的方法,你可以根据场景选择:

1. 最常用:宽松相等法(推荐)

这是最简洁、最符合语言习惯的写法。利用 == null 的特性,它能同时匹配 nullundefined

if(value !=null){// 代码逻辑// 进入这里说明 value 既不是 null,也不是 undefined// value 可以是 0, false, '', [] 等任何其他值}
  • 原理: 在 JavaScript 中,null == undefined 返回 true。因此 value != null 等价于 value !== null && value !== undefined
  • 优点: 代码极简,性能好,是社区公认的“最佳实践”之一。

2. 严格判断:逻辑或(Explicit OR)

如果你追求代码的绝对清晰,或者团队规范禁止使用 ==,可以使用严格全等 === 配合逻辑非。

if(value !==null&& value !==undefined){// 代码逻辑}
  • 优点: 语义非常明确,没有任何隐式转换,逻辑清晰。
  • 缺点: 相对冗长。

3. 现代语法:空值合并运算符(Nullish Coalescing)

如果你是在进行赋值条件判断(例如设置默认值),这是 ES2020 提供的最新语法。

// 场景A:获取一个肯定有值的变量const result = value ??'默认值';// 场景B:在 if 中使用(判断是否存在)if((value ??false)!==false){// 或者更直接地结合布尔值判断}
  • 优点: 专门用于处理 nullundefined,不会把 0false'' 误判为“空”。
  • 注意:?? 运算符在非常旧的浏览器(如 IE)中不支持,需要 Babel 转译。

4. 特殊情况:变量可能未声明

注意: 如果 value 这个变量可能根本就没有被 var/let/const 声明过(直接访问会报错),那么直接使用 value != null 会抛出 ReferenceError

此时必须使用 typeof

if(typeof value !=='undefined'&& value !==null){// 安全地处理可能未声明的变量}
  • 注意: 这种情况在现代模块化开发中很少见,通常变量都会先声明。

💡 避坑指南:不要只用 !value

千万不要使用下面这种写法,除非你同时也想过滤掉 0false 和空字符串 ''

// 错误写法(过度过滤)if(!value){// 这里会把 0, false, '' 也当成空值处理,通常不是我们想要的}

总结建议

场景推荐写法
日常开发、函数参数校验value != null (简洁高效)
严格模式、代码审查严格value !== null && value !== undefined
设置默认值const val = value ?? 'default'

Read more

BK7258 x LiveKit WebRTC :从 0 到 1 的端侧适配

BK7258 x LiveKit WebRTC :从 0 到 1 的端侧适配

> 面向对象:做 AI 硬件、语音对讲、智能终端的开发者 > 关键词:BK7258、LiveKit、WebRTC、实时语音、MCP、设备控制 一、为什么是 LiveKit? 在实时语音 AI 场景里,很多团队一开始只关注“音频能不能传”,但真正落地会遇到更多问题:连接稳定性、会话管理、设备控制、Agent 协同、扩展能力等。 LiveKit 的价值就在于:它不仅是传输层,更是一个面向实时 AI Agent 的平台能力层,统一了房间、参与者、媒体轨道和数据通道能力。 官方定位可以概括为:构建 voice / video / physical AI agents 的平台。   二、BK7258

不用AList也能挂载115网盘?飞牛NAS原生WebDAV配置全攻略

飞牛NAS原生WebDAV直连115网盘全流程解析 在私有云存储领域,飞牛NAS凭借其简洁易用的特性赢得了不少用户的青睐。对于拥有115网盘资源的用户来说,如何在不依赖第三方工具的情况下实现高效挂载,成为提升使用体验的关键。本文将深入探讨飞牛NAS原生支持WebDAV协议挂载115网盘的全套方案,从原理分析到实操细节,帮助用户构建更稳定的私有云存储架构。 1. WebDAV协议与飞牛NAS的兼容性解析 WebDAV(Web Distributed Authoring and Versioning)作为一种基于HTTP/HTTPS的扩展协议,早已成为跨平台文件管理的通用标准。飞牛NAS在系统层面原生集成WebDAV服务,这为直接挂载各类云存储提供了技术基础。相比需要通过AList等第三方工具中转的方案,原生WebDAV连接具有明显的优势: * 性能提升:省去中间层处理,传输效率提高30%以上 * 稳定性增强:减少因第三方服务更新导致的兼容性问题 * 资源占用降低:无需额外安装维护应用,节省系统资源 在实际测试中,原生WebDAV挂载的响应速度比AList方案快1.5-2

前端国际化:别让你的应用只懂一种语言

前端国际化:别让你的应用只懂一种语言 毒舌时刻 这应用写得跟方言似的,出了本地就没人懂。 各位前端同行,咱们今天聊聊前端国际化。别告诉我你的应用还只有中文版本,那感觉就像在国际会议上只说方言——能说,但没人懂。 为什么你需要国际化 最近看到一个项目,想拓展海外市场,但所有文本都是硬编码在代码里的。我就想问:你是在做本地应用还是在做国际产品? 反面教材 // 反面教材:硬编码文本 function App() { return ( <div> <h1>欢迎来到我的网站</h1> <p>这是一个示例应用</p> <button>点击我</button> <div>

【前端实战】Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦

【前端实战】Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦

目录 【前端实战】Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦 一、为什么网络错误处理一定要下沉到 Axios 层 二、Axios 拦截器 interceptors 1、拦截器的基础应用 2、错误分级和策略映射的设计 3、错误对象标准化 三、结语         作者:watermelo37         ZEEKLOG优质创作者、华为云云享专家、阿里云专家博主、腾讯云“创作之星”特邀作者、火山KOL、支付宝合作作者,全平台博客昵称watermelo37。         一个假装是giser的coder,做不只专注于业务逻辑的前端工程师,Java、Docker、Python、LLM均有涉猎。 --------------------------------------------------------------------- 温柔地对待温柔的人,包容的三观就是最大的温柔。 --------------------------------------------------------------------- 【前