等于和绝对等于的区别

1. ==(等于)

  • 特点:比较时会自动进行类型转换(隐式转换),尝试将两边的值转为相同类型后再比较。
  • 规则
    • 如果类型相同,直接比较值。
    • 如果类型不同,按以下规则转换:
      • 数字 vs 字符串:字符串转数字。
      • 布尔值 vs 非布尔值:布尔值转数字(true1false0)。
      • 对象 vs 基本类型:调用对象的 valueOf()toString() 转为基本类型。
      • nullvsundefined:视为相等。

2. ===(绝对等于/严格等于)

  • 特点:不进行类型转换,直接比较类型和值。
  • 规则
    • 如果类型不同,直接返回 false
    • 如果类型相同,再比较值。

|-----------------------|------------------|---------------------|---------------------|
| 场景 | ==****(等于)结果 | ===****(绝对等于)结果 | 原因说明 |
| 5 == '5' | true | false | == 会转换类型为数字再比较 |
| 0 == false | true | false | false 转为 0 |
| '' == 0 | true | false | 空字符串转为 0 |
| null == undefined | true | false | 特殊规则 |
| NaN == NaN | false | false | NaN 不等于任何值,包括自身 |
| {} == {} | false | false | 对象比较的是引用地址 |

相关推荐
托比-马奎尔14 分钟前
ES6变量与解构:let、const与模板字符串全解析
javascript
水煮白菜王1 小时前
从零搭建 React 工程化项目
前端·javascript·react.js
mosen8681 小时前
易混淆的CommonJS和ESM(ES Module)及它们区别
javascript·node.js·express
weixin_516875654 小时前
力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
javascript·笔记·leetcode
明月与玄武4 小时前
Vue 3 高性能实践 全面提速剖析!
前端·javascript·vue.js
黑夜照亮前行的路9 小时前
JavaScript 性能优化实战技术指南
javascript·性能优化
Stringzhua10 小时前
Vue数据的变更操作与表单数据的收集【6】
前端·javascript·vue.js
乐~~~11 小时前
el-date-picker type=daterange 日期范围限制
javascript·vue.js·elementui
初遇你时动了情11 小时前
uniapp vue3 ts自定义底部 tabbar菜单
前端·javascript·uni-app
烛阴13 小时前
掌握 TypeScript 的边界:any, unknown, void, never 的正确用法与陷阱
前端·javascript·typescript