如果我忽略使用double等于(==),是否有任何影响?

时间:2014-02-26 06:54:36

标签: javascript

当我们将三倍等于(===)时,我认为双等于是没有必要。

我是对的吗?

请用简单/好的例子清楚我。

感谢。

5 个答案:

答案 0 :(得分:2)

这取决于。它做了一些不同的事情,我认为==只被认为是不好的,因为它违反惯例,但有时候自动类型强制可能是一个很好的句法糖。只要写这篇文章的人和阅读它的人都明白发生了什么事情就完全可以接受了。如果你想利用那些真实或虚假陈述的东西,那就特别好。 MDN很好地解释了javascript中sameness的概念

答案 1 :(得分:1)

区别在于:

  • ==测试值是否相同
  • ===测试类型是否相等

一个例子:

'1' == 1 // true
'1' === 1 // false

答案 2 :(得分:0)

两者之间的类型转换存在差异。实际上 === operator 被称为严格比较运算符,

示例:

使用 == 运算符。

true == 1; //true, because 'true' is converted to 1 and then compared
"5" == 5;  //true, because 5 is converted to "5" and then compared

使用 === 运算符

true === 1; //false
"5" === 5;  //false
console.log(' \n\n\n' === 0); // false  
console.log(' ' === 0); // false  

示例:

var x = 4;
var y = '4';
if (x == y) {
    alert('x and y are equal');
}
if (x === y) {
    alert('x and y are identical');
}

来自O'Reilly Relational Expression

  

===运算符称为严格相等运算符(或   有时是身份运营商),并检查它是否是两个   操作数使用严格的相同性定义“相同”。 ==   运算符称为等于运算符;它检查它是否是两个   操作数是“相等的”,使用更宽松的同一性定义   允许类型转换。

     

JavaScript支持=,==和===运算符。一定要明白   这些赋值,平等和严格之间的差异   等号运算符,编码时要小心使用正确的运算符!   尽管读取所有三个运营商“等于”是很诱人的,但它可能会   如果您为=读取“获取或被分配”,则有助于减少混淆,“是   等于“for ==,and”严格等于“for ===。

答案 3 :(得分:0)

== double equal不是确切的值

var a = 10;
if(a == "10"){
  alert('true'); // will work fine
}

===是检查变量播放,例如整数

if(a === "10"){
  alert('false'); // will not work
}

答案 4 :(得分:0)

双重等于强制类型,这可能会派上用场,特别是如果你试图对DOM值进行数值比较,这些值总是字符串。例如:

var num = document.getElementById('numericField').value;
if( num===3 ) {
    // this will never be reached, even if the user enters '3'
}
if( num==3 ) {
    // this will be reached if the user enters '3'
}
if( Number(num)===3 ) {
    // this will also work
}