Javascript / jQuery:无论数据类型如何,检查两个值是否相等?

时间:2016-09-15 13:16:53

标签: javascript jquery

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

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

但是,如果存在==,则服务器签入验证将拒绝。它会要求将其更改为===(但我无法更改此内容)。

我如何实现这一点,A&的可能值和类型。 B

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

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

2 个答案:

答案 0 :(得分:4)

从根本上说,==有一些有效的用例,所以我建议找一下可以改变该规则并让他们这样做的人。

在没有这个的情况下,你可以自己编写一个函数来执行==所做的事情,称为abstract equality comparison algorithm,然后使用该函数代替==

  

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

     
      
  1. 如果Type(x)与Type(y)相同,那么      
        
    1. 返回执行Strict Equality Comparison x === y。
    2. 的结果   
  2.   
  3. 如果x为null且y未定义,则返回true。
  4.   
  5. 如果x未定义且y为null,则返回true。
  6.   
  7. 如果Type(x)为数字且Type(y)为字符串,则返回比较结果x == ToNumber(y)。
  8.   
  9. 如果Type(x)为字符串且Type(y)为数字,则返回比较结果ToNumber(x)== y。
  10.   
  11. 如果Type(x)为布尔值,则返回比较结果ToNumber(x)== y。
  12.   
  13. 如果Type(y)为布尔值,则返回比较结果x == ToNumber(y)。
  14.   
  15. 如果Type(x)是字符串,数字或符号且Type(y)是Object,则返回比较结果x == ToPrimitive(y)。
  16.   
  17. 如果Type(x)为Object且Type(y)为String,Number或Symbol,则返回比较结果ToPrimitive(x)== y。
  18.   
  19. 返回false。
  20.   

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

答案 1 :(得分:-2)

我找到了,(解决方法)

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