周四了,群里的大佬出了一道题
let foo = // 完成代码
if(!foo) {
console.log(foo + 1); // 2
}
答案
let foo = document.all
foo.valueOf = () => 1
if(!foo) {
console.log(foo + 1); // 2
}
这个题有四个关键点,一个是 document.all
,一个是 valueOf
,另外两个你猜猜是什么,在文章最后面。
因为
document.all + 1
// 返回 '[object HTMLAllCollection]1'
另一个关键点是 !xxx 是永远不会有类型转换的。
还有一个关键点是 Falsy,假值。
!document.all // 返回 true
总结
我可能是个假前端