当前位置: 首页 > 面试题库 >

空数组似乎同时等于true和false

谢俊力
2023-03-14
问题内容

空数组为true,但也等于false。

var arr = [];

console.log('Array:', arr);

if (arr) console.log("It's true!");

if (arr == false) console.log("It's false!");

if (arr && arr == false) console.log("...what??");

我猜这是由于相等运算符进行隐式转换所致。

谁能解释幕后发生的事情?


问题答案:

您正在这里测试不同的东西。

if (arr) 在对象上调用(数组是JS中Object的实例)将检查对象是否存在,并返回true / false。

当你打电话if (arr == false)你比较
这个对象和原始的false价值。在内部arr.toString()被调用,它返回一个空字符串""

这是因为toString在Array上调用会返回Array.join(),并且空字符串是JavaScript中的虚假值之一。



 类似资料:
  • 问题内容: 即使将属性设置为,我仍然会插入重复的条目。 我设置了使用定期在。我没有用表 问题答案: 我没有使用JPA创建表 然后,您应该在语句中向表中添加唯一约束,例如,如果您使用的是MySQL:

  • 问题内容: 这个功能有jQuery版本吗? 字符串 strip_tags (字符串$ str [,字符串$ allowable_tags]) 从字符串中剥离所有标签和标签内的内容,但允许标签字符串中定义的标签和内容除外。 喜欢: 从: 问题答案: 要删除 标记,而不 除去 content ,这就是PHP的行为,您可以执行以下操作:

  • 我在使用Discord。js和一个长时间运行的Discord bot最近由于消息而突然停止工作。成员对象始终为空。 例如: 这始终会产生:TypeError:无法读取null的属性“roles” 在我们查看消息的代码库中,这种错误也随处可见。成员 即使控制台完全记录消息对象,我们也可以肯定地看到成员属性为空。 Discord.js?有什么变化吗?

  • 问题内容: 我试图从我在主java文件中创建的数组中添加,删除和引用项目,但是我在弄清楚正确的语法时遇到了麻烦。在动作脚本中,它们具有push()和pop()来添加和删除数组中的项目,android中是否有等效项? 问题答案: 在Java中,数组的大小是固定的(初始化后),这意味着您无法在数组中添加或删除项目。 上面的代码段表示整数数组的长度为10。如果不将引用重新分配给新数组,则不能添加第11个

  • 问题内容: 我正在使用JDBC连接到MySQL服务器(我认为没有连接池)。在连接网址中,我有 但是我的连接仍然超时。我什至检查了它的错误。但是,当我尝试使用连接时,出现以下异常。 我知道在Java 1.6中可以使用它来检查连接,但是我正在使用Java 1.5 有没有办法确保它不会超时?还是我必须升级到Java 1.6? 问题答案: 我有同样的问题,这绝对令人发疯。这是文档在MySQL网站上的内容(

  • 嗨,我正在尝试模拟一个装配站,因此我想用一个等待块来协调我的材料的发布。我的流程包括以下步骤: 3种不同的路径:来源—— 模型 当所有代理到达他们的区块时,我想在他们的等待区块中释放我的代理。我现在面临的问题是,所有3个代理都在不同的时间到达。例如,代理1在等待区块1 10分钟后到达,代理2和3在区块2和3 5分钟后到达。所以代理1应该检查其他代理是否到达他们的区块,然后被释放。代理2和3也应该采