为什么if( document.addEventListener)可以判断浏览器是否支持addEventListener?

如题,之前看了一周js高级教程,现在补js权威指南
小白想问下,这里的addEventListener不是方法么,省略括号调用是什么意思,改方法是对象,可这样引用它又有什么意义呢?
我是这样想的doucument里有个属性,属性值是函数,类比的写个代码如下:

var o={
    foo:function(){
        return true;
    }
}
console.log(o.foo);
if( o.foo ){
    console.log(true);
}
else{
    console.log(false);
}
function (){
    return true;
}

为什么这样可以进行if,else判断?

阅读 7.2k
3 个回答

所有值在if的Boolean上下文当中都可以判断,某些值可能进行隐式转换成Boolean,就比如你说的 Function 还有它的小伙伴 Array Object,它们都是复合类型值,都是对象的家庭里面的,而且它们都是真值(true)。

在判断时会转换为 Boolean 值,所有的对象都是 true

为 false 的有 false, undefined, null, 0, NaN, ""

所以 addEventListener 不存在的话会得到 false

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏