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

2024-02-08

空数组为 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)调用对象(Array 是 JS 中 Object 的实例)将检查该对象是否存在,并返回 true/false。

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

这是因为toString在数组返回时调用Array.join(),空字符串是 JavaScript 中的假值之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

空数组似乎同时等于 true 和 false 的相关文章

  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • Angular 2 链式 Promise 并传递拒绝

    应该是一个简单的问题 但是我找不到有关如何做到这一点的文档 像这样链接一个承诺 Making a promise no problem let promise new Promise resolve reject gt let data d
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 如何在ASP.NET Webform中使用Jquery表单插件?

    我遇到了这个插件 http malsup com jquery form getting started http malsup com jquery form getting started 我想知道如何在 ASP NET WebForm
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 为什么 Node.js 的 fs.readFile() 返回缓冲区而不是字符串?

    我正在尝试阅读以下内容test txt 位于 Javascript 源代码的同一文件夹中 并使用以下代码显示它 var fs require fs fs readFile test txt function err data if err
  • iPhone 上的 OpenGL 渐变填充看起来有条纹

    当我使用 OpenGL 绘制渐变填充时 输出看起来是条纹的 即它仅使用大约四分之一的可能颜色进行渲染 所有颜色都会出现在渲染缓冲区中 但不会出现在实际输出中 我正在运行 iOS4 的 iPhone 3G 上进行开发 有任何想法吗 Peter
  • 如何在 R 中永久更改 .libPaths() ?

    每当我使用以下命令更改库路径顺序时 libPaths 功能 如果我重新启动 R 它会恢复为默认值 如何永久更改此设置 我正在Linux计算集群上工作 我没有管理员权限 所以我想将我的本地库永久添加到R中 每次启动 R 时我都必须这样做 li
  • 如何捕获“远程服务器返回错误:(403) 禁止”的异常。

    我收到 远程服务器返回错误 403 禁止 错误并想捕获这个异常 我猜想 HttpException 块应该捕获它 如下所示 但事实并非如此 catch HttpException wex if wex GetHttpCode ToStrin
  • post-commit 挂钩在 svn commit 上产生错误,但在命令行上手动运行时有效

    我目前正在尝试为我的颠覆存储库设置提交后挂钩以发送电子邮件通知 我正在使用颠覆1 7 8 我的提交后挂钩脚本如下 bin sh REPOS 1 REV 2 REPOS hooks mailer py commit REPOS REV REP
  • 显示向量寄存器的约定

    是否有显示 写入大型寄存器的约定 例如英特尔 AVX 指令集中提供的寄存器 例如 如果最低有效字节为 1 最高有效字节为 20 其他位置为 0xmm寄存器 对于按字节显示是以下首选 小端 1 0 0 0 0 20 或者这是首选 20 0 0
  • 实体框架 4.1 - 如何“强制”EF 转到数据库而不是使用图形?

    这是场景 我有一个网站 在单个 HTTP 请求 HTTP POST 中 我需要执行以下操作 抓住一个物体 比方说 标签 保存其他一些对象 假设 问题 获取 标签 的新副本 重定向到另一个页面 该页面需要 标签 的新副本 在幕后 2 涉及影响
  • 支持 IAccesible 接口以在文本编辑器中移动插入符号的正确解决方案是什么?

    我想从头开始实现一个支持 IAccessible 接口的文本编辑器 我正在使用 MFC 和 Win32 API 当记事本等标准文本编辑器中的插入符号位置发生变化时 讲述人 JAWS 等客户端工具将发音与插入符号移动相对应的字母 单词或行 我
  • 在 Entity Framework Core 中编写实体 POCO 类的正确方法是什么?

    EF Core 默认具有 代码优先心态 即它应该以代码优先的方式使用 尽管支持数据库优先方法 但它被描述为只不过是对现有数据库进行逆向工程 创建它的代码优先表示 我的意思是 手动 代码 代码优先 创建的模型 POCO 类 和从数据库生成的模
  • 通过 ssh 转发 SIGTERM

    我希望 ssh 将 SIGTERM 信号转发到远程命令 ssh root localhost root print signal py 获取ssh的PID ps aux grep print signal 杀死匹配的 ssh 进程 kill
  • 如何在用户默认中保存对象列表?

    我的目标是 struct Order Codable var item id String var quantity Int 0 var image String var name String var desc String 函数的类别是
  • 如何在matlab中绘制地圈?

    如何在matlab中绘制地球圈 By Geosphere我的意思是球体上离散化点的方式 例如 3Ds Max 中的 Geosphere On the image below it is shown Sphere on the left an
  • 我如何检索通过java play中的post传递的数据

    这是我的代码 我需要检索 POST 中发送的数据 play db jpa Transactional public static Result registered String fullname String email String p
  • 重新编码鼠标 mids 对象

    我有一个mids对象创建自mice 我想重新编码一些估算变量并保留mids目的 我知道我可以转换mids反对 长 complete 但我想保留mids对象 因为它有一些额外的用途 这是一个使用的示例nhanes数据集 跑步mice 为变量创
  • 如何将 div 高度设置为所选打印纸张的 100%?

    如何将高度设置为所选打印纸张的 100 CSS width 100 height 100 margin auto margin top 0px important border 1px solid 当我在 Google Chrome 中打印
  • 所有本机修订的数据库在哪里?

    我已经阅读了所有 SO 问题 编码恐怖文章 并用 Google 搜索了我的大脑 寻找修订控制数据的最佳方法 它们都可以工作 并且都有基于用例等的适当实现 我真正想知道的是为什么没有编写一个数据库来原生支持数据级别的修改 让我感到困惑的是 A
  • ffmpeg concat 产生 DTS 乱序错误

    我正在关注有关如何操作的文档连接 https trac ffmpeg org wiki Concatenate文件与 ffmpeg 但在这个过程中我看到很多警告 输出视频在第一个块后停止 但音频继续播放 这是我用来连接文件的命令 ffmpe
  • 如何使用 javascript 捕获旧值并将其设置为取消

    我有一个文本字段 我从中调用一个函数onChange事件 当该文本字段中的值发生更改时 我会在此处抛出一个确认窗口 如果单击取消 在确认窗口中 则必须将旧值设置回文本字段 如果单击 继续 或 确定 则应保留新值 我已经尝试了很长时间 但无法
  • AVCaptureOutput didOutputSampleBuffer 停止被调用

    我对委托方法有疑问didOutputSampleBuffer CMSampleBufferRef sampleBuffer fromConnection AVCaptureConnection connection of AVCapture
  • 空数组似乎同时等于 true 和 false

    空数组为 true 但也等于 false var arr console log Array arr if arr console log It s true if arr false console log It s false if a