为什么将数组与对应的字符串进行比较后,其结果为true?
var a = [1,2,3];
var b = '1,2,3';
console.log(a==b);// true
Variable a
存储分配给它的数组的内存地址。然后,内存地址如何等于该数组的相应字符串。
如果为“ ==”,则将数组转换为toString
,然后进行比较,因此它等于true。所以这是怎么回事:
var a = [1,2,3];
var b = '1,2,3';
a == b //is same as
a.toString() === b //true
如果要在严格模式下评估为true,则必须执行以下操作:
var a = [1,2,3];
var b = '1,2,3';
a = a.join(',')
console.log(b === a);
==比较两个变量,而与数据类型无关,而===在严格检查中比较两个变量,这意味着它还会检查数据类型,然后返回true或false。
'=='运算符测试抽象相等性,即在进行相等性比较之前,它进行了必要的类型转换。
但是'==='运算符会测试严格相等性,即它不会进行类型转换,因此,如果两个值不是同一类型,则在比较时它将返回false。
在JS中,您有两个比较运算符:
==-等于
=== —等于值和等于类型
var a = [1, 2, 3];
var b = '1, 2, 3';
console.log(a == b); // Outputs true
console.log(a === b); //Outputs false