繁体   English   中英

Javascript / jQuery:检查两个值是否相等(与数据类型无关)?

[英]Javascript/jQuery: Check if two values are equal regardless of data type?

我有一个if条件,无论数据类型如何,我都需要检查A是否具有与B相同的值,例如

if (A == B) {
   //body of if statement
}

但是如果==出现,则服务器签入验证将拒绝。 它将要求将其更改为=== (但我无法更改)。

AB的可能值和类型为

String, Number, null, '', undefined, NaN

看起来很简单,但可能只是逻辑错误... :)

从根本上讲, ==有有效的用例,因此我建议找到可以更改该规则的人并让他们这样做。

在这种情况下,您可以编写一个自己的函数来执行==工作,即所谓的抽象相等比较算法 ,然后使用该函数代替==

比较x == y(其中x和y是值)产生true或false。 这样的比较执行如下:

  1. 如果类型 (x)与类型 (y)相同,则
    1. 返回执行严格相等比较 x === y的结果。
  2. 如果x为null且y未定义,则返回true。
  3. 如果x未定义且y为null,则返回true。
  4. 如果类型 (x)为数字, 类型 (y)为字符串,则返回比较结果x == ToNumber (y)。
  5. 如果类型 (x)为String, 类型 (y)为Number,则返回比较结果ToNumber (x)== y。
  6. 如果类型 (x)为布尔值,则返回比较结果ToNumber (x)== y。
  7. 如果类型 (y)为布尔值,则返回比较结果x == ToNumber (y)。
  8. 如果类型 (x)为字符串,数字或符号,并且类型 (y)为对象,则返回比较结果x == ToPrimitive (y)。
  9. 如果类型 (x)为对象, 类型 (y)为字符串,数字或符号,则返回比较结果ToPrimitive (x)== y。
  10. 返回false。

规范中明确定义了上面使用的每个抽象操作的确切实现。

我找到了(解决方法)

 A = A ? A.toString() : A;
 B = B ? B.toString() : B;
 if(A === B){
  //Rock it
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM