JavaScript 快速入门:糟糕的比较

javascript 快速入门:糟糕的比较

小虫子可能会从意想不到的地方爬进来。错误的值可能会使您的条件逻辑以意想不到的方式失败。让我们快速看一下严重不平等带来的令人头痛的问题。

基础知识

这些功能并不相同。它们大部分相同,但有一个非常具体的区别。你看到了吗?

const one = (a) => a > 10;const two = (a) => !(a <= 10);

登录后复制

每当我们使用 undefined 或 nan 执行不等式检查时,结果都是 false。如果我们不明确检查边缘情况,两次“等效”检查可能会返回不同的答案。

它是如何发生的

if (!(value <= 10)) {  // ...

登录后复制

如果您遇到该代码,您可能会毫不犹豫地将其更改为 if (a > 10) { 。

更短了。更容易阅读。对于所有正常值它们是相同的。

为什么这很重要

但是我们并不总能得到正常值。这可能是对您的代码的重大更改。这可能会导致非常难以排除缺陷。这个简单的代码中没有任何内容表明我们可能会遇到“坏”值,因此您可能会完全错过它。

立即学习“Java免费学习笔记(深入)”;

类型安全也无法解决这个问题,因为 nan 是一个数字……它只是一个

结论

如果您在代码中遇到这样的奇怪情况,请问问自己,如果您更改错误值,会发生什么情况。希望您的代码可以防止您获得错误的值并执行错误的数学运算,但对这些更改采取一点防御措施可以为您未来的自己省去很多麻烦。

在这种情况下,通常最好对错误值进行显式检查。这些可以向其他开发人员清楚地传达可能的输入和预期结果。

if (Number.isNaN(value) || value > 10) {  // ...

登录后复制

以上就是JavaScript 快速入门:糟糕的比较的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2664285.html

(0)
上一篇 2025年3月7日 11:36:39
下一篇 2025年2月25日 15:05:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 了解 JavaScript 中的提升:综合指南

    javascript 中的提升 提升是一种行为,其中变量和函数声明在之前被移动(或“提升”)到其包含范围(全局范围或函数范围)的顶部代码被执行。这意味着您可以在代码中实际声明变量和函数之前使用它们。 变量提升 变量 用 var 声明的变量被…

    2025年3月7日
    200
  • 理解 JavaScript 对象和函数中的“this”

    js 对象作用域中的 this 关键字 在 javascript 中,了解 this 关键字的内容、方式和位置可能是编写实际有效的代码和在编码时抓狂的区别。 这个关键字 在javascript中,这是一个关键字(保留字),也就是说,它不能用…

    2025年3月7日
    200
  • 多年经验的热门 Java 面试问题和答案

    在软件开发中,Java 仍然是一种基石语言,广泛用于构建健壮、可扩展的应用程序。对于拥有十年经验的开发人员来说,Java 面试可以是对他们的技术技能以及在现实场景中应用这些技能的能力的严格考验。本文旨在为拥有 10 年经验的应聘者量身定制 …

    2025年3月7日
    200
  • Vuejs 条件渲染和 V-if 与 V-show

    如果你喜欢我的文章,可以请我一杯咖啡:)给我买咖啡 vue.js 条件渲染 v-if 和 v-show 指令用于有条件地渲染 vue.js 中的块。 v-如果 在vue.js中,指令v-if用于有条件地渲染块。仅当指令的表达式返回真值时才会…

    2025年3月7日
    200
  • 康威定律和 Web 开发中的关注点分离

    康威定律指出,软件系统往往会反映构建它们的组织的通信结构,它在现代 Web 开发的结构方式中发挥着至关重要的作用。从早期实践到当今更复杂的系统(例如微前端和基于组件的架构)的演变在很大程度上是由这一原则决定的。通过研究历史上 Web 开发中…

    2025年3月7日
    200
  • typescript与js区别

    TypeScript 与 JavaScript 的核心区别在于类型系统,TypeScript 采用强类型,而 JavaScript 采用弱类型。其他差异包括:编译器(TypeScript 编译为 JavaScript)、语法(TypeScr…

    2025年3月7日
    200
  • typescript和java区别

    TypeScript 和 Java 的关键区别在于:静态类型 vs. 动态类型:TypeScript 是静态类型的,在编译时检查类型,而 Java 是动态类型的,在运行时检查类型。编译时 vs. 运行时错误:TypeScript 错误在编译…

    2025年3月7日
    200
  • typescript nodejs区别

    TypeScript和Node.js是不同的技术:TypeScript是一种强类型语言,在编译时进行类型检查;Node.js是一个运行时环境,解释执行JavaScript代码。具体区别包括:1. 类型系统:TypeScript为强类型,No…

    2025年3月7日
    200
  • typescript和python区别

    TypeScript 与 Python 的主要区别在于:1. TypeScript 采用强类型系统,提供类型检查和类型推断,而 Python 使用动态类型系统,只在运行时进行类型检查;2. TypeScript 是编译型语言,Python …

    2025年3月7日
    200
  • typescript属性和变量区别

    TypeScript 中的属性和变量都用于存储数据,但有不同的特性:属性定义:属性是类或接口的成员,用于存储特定实例的数据。变量定义:变量是在函数、方法或块中声明的本地存储单元。关键区别在于作用域、可见性和使用方式。属性作用域于整个类或接口…

    2025年3月7日
    200

发表回复

登录后才能评论