程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么`null> = 0 && null <= 0',而不是`null == 0`?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么`null> = 0 && null <= 0',而不是`null == 0`??

开发过程中遇到为什么`null> = 0 && null <= 0',而不是`null == 0`?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么`null> = 0 && null <= 0',而不是`null == 0`?的解决方法建议,希望对你解决为什么`null> = 0 && null <= 0',而不是`null == 0`?有所启发或帮助;

您真正的问题似乎是:@H_944_3@

为什么:@H_944_3@

null >= 0; // true

但:@H_944_3@

null == 0; // false

真正发生的是 大于等于运算符(>=)执行类型强制(toprimitive),提示类型为number,实际上所有关系运算符都具有这种行为。@H_944_3@

null 等于运算符==)以特殊方式处理。在简短的,它只 强制转换undefined:@H_944_3@

null == null; // true
null == undefined; // true

值,例如false'''0',和[]被受数字类型强制,它们都强迫到零。@H_944_3@

您可以在“抽象相等比较算法”和“抽象关系比较算法”中查看此过程的内部细节。@H_944_3@

综上所述:@H_944_3@

  • 关系比较:如果两个值都不是String类型,Tonumber则在两个值上都调用。这与+在前面添加a相同,后者将null强制转换为0。@H_944_3@

  • 平等比较:仅调用Tonumber字符串,数字和布尔值。@H_944_3@

解决方法

我必须编写一个例程,如果变量的类型为number,则将变量的值加1,否则将变量的值分配为0,其中变量的初始值为nullundefined。@H_944_3@

第一个实现是v >= 0 ? v += 1 : v = 0因为我认为没有数字会使算术表达式为假,但是由于null >= 0计算为真,所以这是错误的。然后,我得知null行为类似于0,并且以下表达式均被评估为true。@H_944_3@

  • null >= 0 && null <= 0
  • !(null < 0 || null > 0)
  • null + 1 === 1
  • 1 / null === Infinity
  • @H_795_7@math.pow(42,null) === 1

当然null不是0。null == 0被评估为false。这使看似重言式的表达成为(v >= 0 && v <= 0) === (v == 0)错误。@H_944_3@

为什么null实际上不是0,却像0?@H_944_3@

大佬总结

以上是大佬教程为你收集整理的为什么`null> = 0 && null <= 0',而不是`null == 0`?全部内容,希望文章能够帮你解决为什么`null> = 0 && null <= 0',而不是`null == 0`?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。