在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 !== '') { 
  // 执行逻辑 
}
相关推荐
一只一只妖10 小时前
突发奇想,还未实践,在Vben5的Antd模式下,将表单从「JS 配置化」改写成「模板可视化」形式(豆包版)
前端·javascript·vue.js
悟能不能悟13 小时前
js闭包问题
开发语言·前端·javascript
秋秋_瑶瑶13 小时前
vue-amap组件呈现的效果图如何截图
前端·javascript·vue-amap
LFly_ice14 小时前
学习React-9-useSyncExternalStore
javascript·学习·react.js
gnip14 小时前
js上下文
前端·javascript
中草药z14 小时前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
野犬寒鸦15 小时前
力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
java·数据结构·算法·leetcode·面试
不知名raver(学python版)15 小时前
npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR!
前端·npm·node.js
醉方休15 小时前
React中使用DDD(领域驱动设计)
前端·react.js·前端框架