数组的隐式转换

  • 一般对象的隐式转换会调用原型对象上的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');
}