当前位置: 首页 > news >正文

JavaScript 的 “==” 存在的坑

  • == (双等) 指的是宽松相等 — 会做隐式类型转换
    • 举例:0 == '' // true '5' == 5 // true
  • ===(三等) 指的是严格相等类型和值都相等才 true
    • 举例:0 === '' // false '5' === 5 // false

在业务逻辑里经常因为隐式转换导致条件误判,业界普遍推荐 一律用 === / !==。

举例场景:判断用户是否从第 0 张滑块回到最后一张

① 错误版本 (用了 ==)

onChange(e) {const current   = e.detail.current;     // 数字 0、1、2…const source    = e.detail.source;      // 'touch' | 'autoplay'const pageCount = this.data.slides.length; // 假设 = 5// ❌ BUG:尝试判定「是手动触发 & current == 0」if (source == 'touch' && current == 0) {   // ← 坑点tt.showToast({ title: 'You are back to first page!' });}
}

source 是 字符串 ‘touch’,判断没问题;

current 是 数字 0 ,但是==是宽松相等。

  • 存在的问题:current 正常是数字 0,但若某次回调把它写成字符串 ‘00’、空字符 ’ '、或者 false,右侧是number类型,== 会把字符串’00’ 转成数字 0,再做比较
    • 导致current 是 '00' ' ' 和false的时候,current == 0的实际结果都是True!
  • 于是会把本不该弹的情况当成当前页=0,误弹提示。

在这里插入图片描述

② 正确版本 (统一类型 + 用 ===)

onChange(e) {const { current, source } = e.detail;const isTouchFirst = (source === 'touch' && current === 0);if (isTouchFirst) {tt.showToast({ title: 'You are back to first page!' });}
}

改用 ===,同时把常量也写成数字 0;

现在只有 “手动”+“current 为数字 0” 才会满足条件;

自动播放到第 0 页 (source === ‘autoplay’) 不会再误判。

★ 结论

  • 用 === / !==:让类型不符合时立即为 false,更早暴露错误;

  • 常量写成正确类型:数字用 0,字符串用 ‘0’,别混;

  • 小程序事件对象字段(detail.current、detail.source…)要先确认 准确类型,再写比较。

http://www.lqws.cn/news/484885.html

相关文章:

  • C++法则2:对于一个调用,如果一个非函数模板与一个函数模板提供同样好的匹配,则选择非模板版本。
  • Vulkan 学习笔记14—模型加载(OBJ、glTF)
  • Elasticsearch、Faiss、Milvus在向量索引实现上的核心差
  • 利用通义大模型构建个性化推荐系统——从数据预处理到实时API部署
  • 微处理器原理与应用篇---常见基础知识(7)
  • 【编程语言基础算法】前缀和
  • 【C++】C++枚举、const、static的用法
  • 73、单元测试-断言机制
  • 发送与接收
  • Spring Boot 项目初始化
  • EXPLAIN优化 SQL示例
  • MySQL之索引结构和分类深度详解
  • UML:类图
  • 电脑商城--购物车
  • Windows 后渗透中可能会遇到的加密字符串分析
  • 第16章 接口 笔记
  • 嵌入式C语言编程规范
  • 逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
  • 等等等等等等
  • git安装使用详细教程
  • 每日算法刷题Day35 6.22:leetcode枚举技巧枚举中间2道题,用时1h
  • ruoyi-flowable-plus中satoken的配置使用
  • Kafka Streams架构深度解析:从并行处理到容错机制的全链路实践
  • TCP流量控制与拥塞控制:核心机制与区别
  • git 如何忽略某个文件夹文件
  • AI 辅助生成 Mermaid 流程图
  • Python 的内置函数 help
  • Matplotlib入门指南:从安装到绘制基本图形
  • 给docker 配置代理 IP机端口
  • Protobuf 与 JSON 的兼容性:技术选型的权衡与实践