大家好,我是Kason。根据ES规范,所有非原始对象转换为Boolean都是true:但这里有一个特例:document.all这篇文章会讲到这个冷知识。document.all的作用document.all会返回一个HTMLAllCollection集合,包括文档下的所有节点。可以理解为包含页面中所有DOM节点的集合:早期的web开发者使用该API获取DOM节点,例如://获取页面中的第一个节点,即HTMLdocument.all[0];//获取页面id为"abcd"的节点document.all["abcd"];随着WEB的发展,它的作用逐渐被document的其他方法所取代,比如:getElementByIdquerySelector...虽然负重前行的W3C有更好的API,但是很多旧的页面还是使用document.all.如何更好的过渡?为了兼容性,很多开发者会写如下代码:实现了,这将允许代码在所有浏览器中进入旧浏览器的逻辑。从2009年6月到2009年10月,有关document.all的W3C邮件列表多达56个。最终讨论的结果是:在现代浏览器中,将document.all转换为Boolean的结果为false。这样上面的代码在现代浏览器下就不会进入旧浏览器的逻辑了。总结除了以上特点,document.all还有一些不同于常人的特点。例如作为==和!=运算符的比较对象时,会被当作undefinedtypeofdocument.all==='undefined'。这一切都是为了浏览器向后兼容。尽管许多现代浏览器都支持document.all,但它已从标准中删除。目前唯一能想到的作用大概就是和面试官争论吧。。。欢迎加入人类优质前端框架群,带头
