为什么不能使用=[] 判断数组为空数组

新手上路,请多包涵
 var a=[] 

 if(a==[]){  //判断为空数组

    console.log(true);

 }else{

    console.log(false);

 }

如题,为什么不能使用上面的方式判断数组为空数组,而必须通过数组长度?
不知道哪位道友回答一下

阅读 2.8k
3 个回答

数组是引用型数据,而js规定,两个引用型的数据进行相等判断的时候和全等判断是一样的,是比较内存地址(引用地址)是否相同。虽然两个都是空数组,但是他们并不是同一个数据,所以内存地址不一样

数组比较的是地址,不会比较地址内的值。简单来讲,你家和邻居家都没人的时候,你和你邻居家是不一样的,因为用你的钥匙打不开邻居家的门。

这源自于对相等的定义:两个引用类型变量比较相等,必须是引用同一对象才成立。
语言本身的定义就是这样,a和[]它可以等可以不等,总得选一个吧,JS选了不等。

python和JS很类似,但是在这种地方对相等的定义就不同:
image.png

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