数组的隐式转换
- 一般对象的隐式转换会调用原型对象上的
toString方法 - 数组的隐式转换,会先调用
join方法,然后调用toString方法
面试题
var a = ?; //这里 a 在什么情况下,代码段会打印1
if(a == 1 && a== 2 && a== 3){
console.log(1);
}上述问题其中一个答案就是利用了先调用join的特性:
var a = [1,2,3];
a.join = a.shift;
if(a == 1 && a == 2 && a == 3) {
console.log('1');
}另一个答案:
var a = {
i: 1,
toString: function () {
return a.i++;
}
}
if(a == 1 && a == 2 && a == 3) {
console.log('1');
}