解释一下为什么 '+[] == 0' 在 Javascript 中输出 'true'? [复制]

2024-03-31

解释为什么+[] == 0给出输出'true'在 JavaScript 中?

请检查示例。

+[] == 0 ? alert(true) : alert(false);

并且还要检查。'1+[+[]]'给出输出'10'


它将被评估如下,

1 : +[] == 0 --> +"" == 0

操作员+是具有最高优先级 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence than ==所以首先会对其进行评估。因此,在将数组转换为数字的过程中,ToPrimitive() http://www.ecma-international.org/ecma-262/5.1/#sec-9.1函数将通过将其作为参数传递来调用。自从[] is an object,它将返回"" string

2 : +"" == 0 --> 0 == 0

空字符串将被转换为0。非空字符串将被转换为NaN众所周知。

3 : 0 == 0 --> true

最后按照抽象相等比较算法 http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3,当两个相同类型的操作数进行比较时,不会发生进一步的评估,它会直接检查其是否相等并返回结果。


在你的第二种情况下1+[+[]],评估将会发生,

1 : 1+[+[]] - ( +[]将首先转换为原始类型,因为[]它是一个物体)

2 : 1+[+""] ( toPrimitive([]) http://www.ecma-international.org/ecma-262/5.1/#sec-9.1"" )

3 : 1+[0] ( 0当您将空字符串转换为数字时将产生 )

4 : 1+"0" ( toPrimitive([0]) http://www.ecma-international.org/ecma-262/5.1/#sec-9.1"0" )

5 : "10"

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

解释一下为什么 '+[] == 0' 在 Javascript 中输出 'true'? [复制] 的相关文章

  • 为什么我会收到此 Javascript 错误“连接未定义”?

    我不确定为什么会收到此错误 connection is not defined document getElementById flashTest sendValFromHtml connection value 这是我的代码 functi
  • Chart.js 渲染垂直堆积条形图太慢

    我正在使用 Chart js API 渲染多个堆叠的垂直条形图 但性能很慢 我什至做了一些改变 这样所有的content对象已经由服务器而不是浏览器处理 但我意识到大部分时间来自最终函数new Chart overallStatsChart
  • 使用 lambda 更新 amazon s3 对象元数据而不执行对象复制?

    是否可以使用 lambda 函数添 加或更新 s3 对象元数据而不复制对象 这篇 2 年前的帖子说我们确实需要复制一份 https stackoverflow com questions 32646646 how do i update m
  • 如何将毫秒转换为可读的日期?

    下列 new Date 1324339200000 toUTCString Outputs Tue 20 Dec 2011 00 00 00 GMT 我需要它返回Dec 20 除了我可以使用的更好的方法之外toUTCString 我正在寻找
  • 如何使用 javascript/ASP.NET/CSS 旋转和淡入淡出背景图像

    我需要随机淡入淡出背景图像 这将是一个定时函数 例如每 5 秒一次 我需要使用 ASP NET Javascript CSS 或全部三者来完成此操作 请大家帮帮我 谢谢 Cycle 一个 jQuery 插件 是一个非常灵活的图像旋转解决方案
  • 从字符串中提取电子邮件地址

    我有一个像这样的字符串 Francesco Renga lt email protected cdn cgi l email protection gt 我只需要提取电子邮件 即 电子邮件受保护 cdn cgi l email protec
  • 在多个 angular.js 应用程序之间共享单个服务

    我正在构建一个电子商务网站 基于 shopify 并且使用多个小型 angularjs 应用程序来处理诸如快速购物车 愿望清单 过滤产品和其他一些较小项目之类的事情 我最初使用了一个大型应用程序 具有路由和所有内容 但当我没有完整的 RES
  • Android键盘点击搜索输入时出现和消失

    我在用谷歌地图 Js API当我搜索一个地方时 我的输入搜索栏工作正常 当我通过 iPhone 设备使用它时 它也工作得很好 但是当我通过Android 设备然后键盘立即出现和消失 我已经找到了一些关于当我按下搜索栏时 android 键盘
  • 如何使用谷歌地图检测一个点是否在多边形内部?

    我想检测到google maps LatLng是在一个里面google maps Polygon 我怎样才能做到这一点 Cheers 你可以使用这个谷歌地图V3 google maps geometry poly containsLocat
  • 为 Promise 编写循环的正确方法。

    如何正确构造循环以确保满足以下条件承诺电话和被束缚的记录器 log res 通过迭代同步运行 蓝鸟 db getUser email then function res logger log res this is a promise 我尝
  • React-Router v5 History.push 不触发组件

    很抱歉朋友们又问这个问题了 我找到了解决这个问题的几个方法 但他们让我很困惑 我只是想问一个优雅的方法来做到这一点 正如你通过标题所理解的 我有一个关于反应路由的问题 让我解释 我有一个按钮 其名称是Login 单击按钮后 我执行了一些逻辑
  • 节省页面加载时间的提示[重复]

    这个问题在这里已经有答案了 我的问题 削减那些不必要的 kb 并使页面加载速度更快的最佳方法是什么 全部是什么优化实践 编码实践 在js php中 如果执行可以使您的页面更轻 为什么我问这个 我读了这篇关于 jquery js 与 jque
  • 无法将中间件与 Firebase 和 NuxtJS 3 一起使用

    我正在尝试在示例项目中使用 Firebase 身份验证 身份验证按预期工作 但是一旦我想使用中间件来阻止用户访问管理页面或在已经登录的情况下访问登录页面 这是不可能的 我已经尝试了几个小时 但没有任何效果 这是我的package json
  • 脚本标签内的 Razor RenderSection - 如何将脚本从视图插入模板函数

    我正在使用 MVC 3 和 Razor 视图引擎 我想将多个视图中的脚本注入到一个集中定义的视图中 document ready 母版页中的功能 我已经尝试过以下方法 在我的大师看来 然后 section DocumentReady ale
  • IE 开发工具断点不起作用

    我正在尝试在 IE 11 中调试一些 javascript 但无法强制它在断点处停止 debugger 行工作正常 停止该行中的调试器 相同的文件没有debugger 行但在同一位置设置断点不会执行任何操作 功能正常 但调试器不会在断点处停
  • 401 未经授权的帖子回复

    我一直在使用 Angular 模板制作 Node js 网站 但我无法在 DB Mongo 上创建数据 这是代码 节点路由 var Property mongoose model Property var jwt require expre
  • 通过排列四个给定数字找到最大可能时间 HH:MM

    我最近为了工作晋升而参加了编码测试 这是我真正遇到的任务之一 我想知道什么是最好的方法来做到这一点 我使用了大量的 if 和 if else 这不是最干净的解决方案 但完成了工作 我被问到的问题是 将 4 个数字格式化为 24 小时时间 0
  • 来自 ajax 的 Bootstrap 表 json

    我有 ajax 和 bootstrap 表的问题 我有一个 ajax JSON 我用这个方法调用 document ready function ajax url php process php method fetchdata dataT
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • 为什么转换 new.Date() .toISOString() 会改变时间?

    我正在以两种不同的格式在数据库中插入日期 这是作为日期时间插入 var mydate mydate new Date document getElementById clockinhour value mydate toISOString

随机推荐

  • 将日期转换为特定格式的字符在R中

    我需要映射 3 4 个具有不同日期格式的不同数据帧 我们如何将日期转换为以下格式 YYYY MM DD 转换为以下格式的字符 MMM YY 从字符串创建日期对象 如果您的列已采用日期格式 请跳过此操作 original date lt as
  • 防止 SliverAppBar 标题在 Flutter 中收缩时换行

    我有一个 Flutter 应用程序 它在 CustomScrollView 中使用 SliverAppBar SliverAppBar 的标题非常长 因此当 AppBar 在滚动时压缩时 标题开始换行几次 我想在不使用溢出的情况下防止这种行
  • 根据条件合并不同行的字段

    亚马逊为其市场客户提供 CSV 报告 其中包含有关您销售的每篇文章的信息 每篇文章有四行 如下所示 orderid amounttype amountdescription amount 305 2406165 0572365 ItemPr
  • 每次点击都会弹出新窗口

    我有一个弹出窗口 我使用下面的脚本打开它 每次点击时 我想打开新的弹出窗口 据我了解 为窗口指定唯一的名称将解决问题 在本例中为 SampleWindow 保持窗户独特性的最佳方法是什么 还有其他方法可以管理 javascript 弹出窗口
  • Orchard CMS 事务错误

    我们的 Orchard 网站上经常随机出现以下错误 当在页面之间快速导航时 这种情况似乎最为普遍 日志中没有其他错误 因此我不确定如何找出根本原因 我们没有对 ODBC 或类似的东西做任何特殊的事情 这是 google 在搜索有关 Orch
  • 使用 x64 汇编代码的基本输入

    我正在编写有关汇编中基本输入和输出的教程 我使用的是 64 位 Linux 发行版 Ubuntu 在教程的第一部分中 我讨论了基本输出并创建了一个简单的程序 如下所示 global start section text start mov
  • 从 gradle/groovy 中的路径创建目录结构

    我正在从 git 命令行输出在项目的 gradle 构建中实现 diff 包生成任务 目前我有一个方法可以给我一个已更改文件的列表git diff name only 我想做的是在一个新目录中创建一个与每个文件的路径匹配的目录结构 例如 输
  • 从Python中的日期字符串中删除时间戳

    我遇到了应该忽略日期字符串中的时间戳的情况 我尝试过以下命令 但没有成功 start variable used below is in AbsTime Ex 01MAY2017 11 45 and not a string start d
  • 是否有任何 AngularJS + ASP.NET-WebApi + OData + Breeze.js + Typescript 示例,或者有人尝试将这些示例结合起来

    我试图结合这些技术 但没有什么好的结果 因为实体框架元数据不会被breeze js消耗 即使是所有设置的配置 这也是一个有点棘手的情况 实际上没有这样的例子 所以这个是我的示例代码 它不能正常工作 但不知何故 也许有人会发现我的错误 并最终
  • 错误:数据库连接“Sqlite”丢失,或无法创建 Cakephp 2.9.0

    您好 我正在使用 phpdesktop 构建桌面应用程序 我遇到了这个问题Error Database connection Sqlite is missing or could not be created 使用时cake bake 我能
  • 如何在不使用属性路由的路由属性上指定名称的情况下生成 Web Api 2 URL?

    我已将 ASP NET MVC5 应用程序配置为使用 WebApi 的 AttributeRouting public static class WebApiConfig public static void Register HttpCo
  • WordPress - 如何获取父类别 ID

    WordPress 如何获取父类别 ID my category is news gt sport news 我有一个帖子在sport news 如何获得parent 新闻 我进入体育新闻帖子时的ID 这段代码回显父猫的名字 foreach
  • 如何为.NET Core 3.0 Worker Service设置serilog SEQ

    日志记录正在工作 但它没有发布到我的本地 seq 我尝试添加 serilog 和 useSerilog 但它没有登录到我的本地服务 相关问题 https stackoverflow com questions 56941898 how to
  • “update”属性可以同时更新两个组件吗?

    我有个问题 是否可以同时更新两个组件 我正在尝试这样的代码
  • ‘源代码与字节码不匹配’使用IDEA调试JdbcTemplate

    当我使用IDEA调试JdbcTemplate源代码时 IDE提示我 源代码与字节码不匹配 截屏 我使用 mvn 来管理我的项目 我的 maven pom 配置是
  • 在 JTable 中显示 HTML

    有人可以给我提供一个如何在 JTable 单元格中显示 HTML 的示例吗 我知道这可以为其他 Swing 组件完成 但我似乎无法弄清楚 JTables 的情况 你记得放吗围绕 HTML 标记 默认字符串渲染器JTable uses JLa
  • R 的 read.csv() 省略行

    在 R 中 我尝试读取大约 42 900 行的基本 CSV 文件 由 Unix 的 wc l 确认 相关代码是 vecs lt read csv feature vectors txt header FALSE nrows 50000 其中
  • Sonarqube 5.5 和 mariadb

    我们正在尝试升级到最新的 sonarqube 5 5 我们有 mariadb 10 1 最新 从现在起我们的 sonarqube 就没有问题了 现在 升级后 sonarqube 将无法启动 它说 不支持的 mysql 版本 5 5 最低支持
  • SwingWorker 与 FileReader

    我对使用 FileReader 应用 SwingWorker 有问题 我的观点是我需要使用 SwingWorker 实现 FileReader 以使我的 UI 显示文件中的文本 这是我的代码 class Read1 extends Swin
  • 解释一下为什么 '+[] == 0' 在 Javascript 中输出 'true'? [复制]

    这个问题在这里已经有答案了 解释为什么 0给出输出 true 在 JavaScript 中 请检查示例 0 alert true alert false 并且还要检查 1 给出输出 10 它将被评估如下 1 0 gt 0 操作员 是具有最高