在nodejs之中, userUuid !== '' 和 userUuid != ''是一样的吗?

在 Node.js 中,if (userUuid !== '')if (userUuid != '') 不一样 ,核心区别在于比较运算符的严格性

1. !==:严格不相等运算符

  • 规则 :同时比较值和类型,只有当两者值不相等类型也不相等 时,结果才为 true

  • 示例

    javascript 复制代码
    const userUuid = '';
    console.log(userUuid !== ''); // false(值和类型都相同)
    
    const userUuid = 0;
    console.log(userUuid !== ''); // true(值不同,类型也不同:number vs string)
    
    const userUuid = null;
    console.log(userUuid !== ''); // true(类型不同:null vs string)

2. !=:非严格不相等运算符

  • 规则:先尝试进行类型转换(将两边的值转为同一类型),再比较值是否不相等。

  • 示例

    javascript 复制代码
    const userUuid = '';
    console.log(userUuid != ''); // false(值相同)
    
    const userUuid = 0;
    console.log(userUuid != ''); // false(0 会被转为空字符串 '',值相同)
    
    const userUuid = null;
    console.log(userUuid != ''); // true(null 转换后与 '' 不相等)
    
    const userUuid = undefined;
    console.log(userUuid != ''); // true(undefined 转换后与 '' 不相等)

关键区别场景

userUuid 的类型不是字符串时,两者结果可能不同:

  • userUuid0(数字):
    • userUuid !== ''true(类型不同)
    • userUuid != ''false(0 被转为 '',值相等)
  • userUuidnull
    • userUuid !== ''true(类型不同)
    • userUuid != ''true(转换后值不相等)

建议

在判断字符串是否非空时,推荐使用 !== ,因为它不会进行隐式类型转换,逻辑更清晰,能避免因类型差异导致的意外结果(比如误判 0 为空白字符串)。

例如,确保 userUuid 是字符串且不为空:

javascript 复制代码
if (userUuid !== '') { 
  // 执行逻辑 
}
相关推荐
EndingCoder14 小时前
TypeScript 入门:理解其本质与价值
前端·javascript·ubuntu·typescript·node.js
1024小神14 小时前
cloudflare使用express实现api防止跨域cors
前端
we1less14 小时前
[audio] AudioTrack (七) 播放流程分析
前端
Bohemian14 小时前
kafka学习笔记系列——小试牛刀
面试·kafka
2501_9462447814 小时前
Flutter & OpenHarmony OA系统弹窗对话框组件开发指南
javascript·flutter·microsoft
Johnnyhaha14 小时前
Docker Compose Pull 超时与代理踩坑记录
前端
烟袅14 小时前
React 表单的控制欲:什么时候我们真得控制它了,什么时候该放养了?
前端·react.js
不想秃头的程序员14 小时前
吃透 JS 事件委托:从原理到实战,解锁高性能事件处理方案
前端·面试
AntoineGriezmann14 小时前
前端 Token 刷新机制实战:基于 Axios 的 accessToken 自动续期方案
前端
烟袅14 小时前
从定时器管理出发,彻底搞懂防抖与节流的实现逻辑
前端·javascript