在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 !== '') { 
  // 执行逻辑 
}
相关推荐
费曼学习法14 小时前
Vue 响应式系统源码级剖析:从 Object.defineProperty 到 Proxy
javascript·vue.js
前端那点事14 小时前
Vue十万条数据渲染无卡顿!3种工业级方案(附可复制代码+避坑指南)
前端·vue.js
AI人工智能+电脑小能手14 小时前
【大白话说Java面试题】【Java基础篇】第35题:怎样声明一个类不会被继承?什么场景下会用
java·开发语言·后端·面试
神奇小汤圆14 小时前
快手一面:为什么要求用Static来修饰ThreadLocal变量?
javascript
tenggouwa14 小时前
16GB Mac 同时开 3 个 Cursor 拯救我的mac
前端·后端
xsgbbx14 小时前
装完 ruflo 发现它内置了 98 个 Agent——拆一下它的多智能体编排架构
面试
天天打码14 小时前
从 Rolldown 到 Oxc:前端工具链正在全面 Rust 化
开发语言·前端·rust
zubylon14 小时前
前端 RAG:把文档检索接到聊天页
前端·人工智能·算法
行业研究员14 小时前
HTML头部元信息避坑指南大纲
javascript
犹豫的果冻布丁15 小时前
OpenSpec 完全中文教程:AI 规范驱动开发入门与实战
前端·后端