Skip to content

认识 JavaScript document.all

Published: at 05:50 PMSuggest Changes

周四了,群里的大佬出了一道题

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,假值。

MDN - Falsy

!document.all // 返回 true

总结

我可能是个假前端


Previous Post
JS 解构赋值
Next Post
Git GPG 重置与错误修复