我有一个if条件,我需要检查A是否与B具有相同的值,而不管数据类型如何
if (A == B) {
//body of if statement
}
但是,如果存在==
,则服务器签入验证将拒绝。它会要求将其更改为===
(但我无法更改此内容)。
我如何实现这一点,A
&的可能值和类型。 B
是
String, Number, null, '', undefined, NaN
看起来很简单,但可能只是一个逻辑错误......:)
答案 0 :(得分:4)
从根本上说,==
有一些有效的用例,所以我建议找一下可以改变该规则并让他们这样做的人。
在没有这个的情况下,你可以自己编写一个函数来执行==
所做的事情,称为abstract equality comparison algorithm,然后使用该函数代替==
:
比较x == y,其中x和y是值,产生true或false。这样的比较如下进行:
- 如果Type(x)与Type(y)相同,那么
- 返回执行Strict Equality Comparison x === y。
的结果- 如果x为null且y未定义,则返回true。
- 如果x未定义且y为null,则返回true。
- 如果Type(x)为数字且Type(y)为字符串,则返回比较结果x == ToNumber(y)。
- 如果Type(x)为字符串且Type(y)为数字,则返回比较结果ToNumber(x)== y。
- 如果Type(x)为布尔值,则返回比较结果ToNumber(x)== y。
- 如果Type(y)为布尔值,则返回比较结果x == ToNumber(y)。
- 如果Type(x)是字符串,数字或符号且Type(y)是Object,则返回比较结果x == ToPrimitive(y)。
- 如果Type(x)为Object且Type(y)为String,Number或Symbol,则返回比较结果ToPrimitive(x)== y。
- 返回false。
醇>
上面使用的每个抽象操作的确切实现都在规范中明确定义。
答案 1 :(得分:-2)
我找到了,(解决方法)
A = A ? A.toString() : A;
B = B ? B.toString() : B;
if(A === B){
//Rock it
}