我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
当前回答
从核心JavaScript参考
=== 返回是真实的,如果操作员是严格平等的(见上)没有类型转换。
其他回答
因此,新 String(“Hello world”) ===“Hello world”返回虚假,但是, ==不关心如果对象是相同的,它只是将一个论点转换为另一个类型:如果转换是不可能的,返回虚假。
一个简单的例子是
2 == '2' -> true, values are SAME because of type conversion.
2 === '2' -> false, values are NOT SAME because of no type conversion.
是的,平等 ==和身份 ===操作员之间有一个很大的差异. 通常,身份操作员表现更快,因为没有类型的转换完成. 但如果值是相同的类型,你会看到没有差异. 查看我的帖子 JavaScript 平等操作员的传说,解释了细节,包括类型的转换和比较算法,有很多例子。
操作员称为严格的比较操作员,与操作员不同。
将采取2 vars a 和 b。
对于“a = = b”来评估为真实的 a 和 b 必须是相同的值。
在“a === b”的情况下,a 和 b 必须是相同的值,也必须是相同的类型,以便它被评估为真实。
接下来的例子
var a = 1;
var b = "1";
if (a == b) //evaluates to true as a and b are both 1
{
alert("a == b");
}
if (a === b) //evaluates to false as a is not the same type as b
{
alert("a === b");
}
简而言之,使用 == 操作员可能会在您不希望使用 === 操作员这样做的情况下评估为真实。
在90%的使用场景中,不管你使用哪个,但当你有一天得到一些意想不到的行为时,知道差异是有用的。
JavaScript 执行流图为严格的平等 / 比较 '==='
此分類上一篇
JavaScript 执行流图为非严格的平等/比较“==”
此分類上一篇