声明:我不是面试题的发明者,我只是一个搬运工
1.属性名的问题
var a = [
b = { key: 1 },
c = { key: '2' }
]
a[b] = 12;
a[c] = 23 ;
console.log(a[b]);
此面试题主要考察了3个点
1.通过[]是调取什么(读取的是属性的值)
2.通过[]来调方法[]内部是读取的什么(是将读取的值转换为字符串)
3.如何转换b的值为字符串(使用toString()方法)
4.对象的值转换为字符串后是什么([object Object])
即本题a[b] = a[c] = a[{任意对象}]
所以最终答案是23
2.等式成立
var a = ?;
console.log(
a == 1 &&
a == 2 &&
a == 3
);
?问好是什么时,能使打印为true
此面试题主要考察了2个点
- ==隐式转换
- 转换方法(首先使用valueOf(),不行时再使用toString()来转换)
所以最终答案为:
a = {
n:1,
valueOf:function(){
return this.n++
}
}
当然大家可以想一下如果将a == 3改为a == 4时,改如何修改呢
var a = ?;
console.log(
a == 1 &&
a == 2 &&
a == 4
);