以下都是一些面试题目
-
var a = ?;
if(a == 1 && a == 2 && a == 3){
console.log(1);
}var a = [1, 2, 3]; a.toString = a.shift; if (a == 1 && a == 2 && a == 3) { console.log('1'); }
进行 == 判断的时候,两边类型要是不相同,会进行一下类型转换
也可以像下面这样写
通过伪数组的写法,自定义一个toString的方法var a = { 0: 1, 1: 2, 2: 3, length: 3, toString: Array.prototype.shift } if (a == 1 && a == 2 && a == 3) { console.log('1'); }
-
var obj = {
‘2’: 3,
‘3’: 4,
‘length’: 2,
‘splice’: Array.prototype.splice,
‘push’:Array.prototype.push
}
obj.push(1)
obj.push(2)
console.log(obj)
不管是Array.prototype.splice还是Array.prototype.push,都是通过length的长度,来对数组进行删除和添加
obj.push(1):1. 先找到length,length=2;2. obj[‘2’]=1;
obj.push(2):1. 先找到length,length=3;2. obj[‘3’]=2;
最终obj = {‘2’: 1, ‘3’: 2}