解释一下为什么 '+[] == 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'? [复制] 的相关文章

  • 未调用 Ajax 回调。如何解决这个问题?

    我再次来这里寻求您的建议 我有一些 AJAX 调用 用于从我的编辑器 PHP 在线编辑器 运行代码 大家可以来看看my site http web guru99 com 我有一些 ajax 调用来发送编辑器的数据并接收输出 问题 for 循
  • Next.js - 如何使用 Provider 来包装路由并使用 Context 和 Hooks

    我在 create react app 中编写了类似于以下的代码 我想知道 next js 的等效代码 下面的代码是我尝试拥有一个可用于所有页面的全局上下文 提供者包装链接 我没有收到任何错误 问题出在里面about当我期望上下文状态时 页
  • 在 Firefox 中访问全局事件对象

    目标 运行一些函数 ajaxStart 但仅限于由特定事件触发时 代码 loading indicator ajaxStart function if event null if event type hashchange event ty
  • AngularJS 仅在解析时返回两个 http get 请求

    我有一个 Angular 应用程序 在控制器中我需要调用一个发出两个 http get 请求的函数 并且我需要这个函数在解析这些值时返回这些值 我无法在 routeProvider 中解析它们 因为此函数需要在同一控制器中获取值 我展示了控
  • 从 javascript 调用 HttpHandler

    我有一个简单的页面 带有通过 JavaScript 调用 HttpHandler 的按钮 HttpHandler 获取大量文件并将它们添加到 zip 文件中 完成工作后 zip 文件将添加到 Response 中 此操作可能需要几分钟时间
  • Canvas drawImage 内联 svg 在 Firefox 上不起作用

    这是一个例子 它采用 svg 并将其转换为画布 http jsfiddle net Na6X5 944 http jsfiddle net Na6X5 944 var can document getElementById canvas1
  • 如何使用 jQuery 检查文件输入大小?

    我有一个具有文件上传功能的表单 如果用户尝试上传的文件太大 我希望能够有一些不错的客户端错误报告 是否有一种方法可以使用 jQuery 检查文件大小 或者纯粹是在客户端上或以某种方式将文件发送回服务器进行检查 您实际上无权访问文件系统 例如
  • 在 PHP 中合并文件块

    出于教育目的 我想创建文件块上传 你们怎么知道所有块何时上传 我试图从temp并重命名它们 使它们按正确的顺序排列 然后与最后一个块将它们合并在一起 然而 我猜最后发送的并不是最后收到的 所以fopen on chunks 失败 因为它们尚
  • 指令可以从父作用域中删除自身吗

    假设我有以下代码 div div div div 我的自定义指令有一个独立的范围 定义为 app directive customDirective function log return restrict E templateUrl te
  • 根据每个选项的值或 ID 过滤选择框

    我想使用jquery来过滤表单中的所有选择框 例如 在第一个选择框中 如果我选择 仅显示1 我想过滤所有选择元素中的所有选择选项 以隐藏值不包含 1 的任何选项 仅应显示带有 1 的产品值 如果选择 Filter 选项 则所有选择框的默认值
  • 如何在 blob 类型中使用 UTF-8?

    我必须通过 csv 文件导出表 csv 文件数据来自服务器 按 Blob 类型 Blob size 2067 type text csv async exportDocumentsByCsv this commonStore setLoad
  • 用 JavaScript 改变文本颜色?

    我想在单击按钮时更改标题的颜色 这是我的代码 但它不起作用 我不明白为什么不 var about function init about document getElementById about innerHTML about style
  • 如何检查浏览器中消失的元素?

    How can I inspect an element which disappears when my mouse moves away 我不知道它的 ID 类别或其他任何信息 但想检查它 我尝试过的解决方案 在控制台内运行 jQuer
  • 在单页应用程序上重用 Google Maps API 实例

    假设我有一个单页应用程序 Angular JS 应用程序 并且我在元素 id 上绘制一个 Google 地图实例googleMap var mapInstance new google maps Map document getElemen
  • 如何使用 HTML5 在画布上绘制心电图监视器?

    我尝试使用canvas html5绘制心电图系统 几乎我即将完成我的波浪正在移动 但不是连续地重复 但我想绘制波浪是从左到右连续移动的 下面的链接是示例 Ex https www youtube com watch v wuwBfSpVEg
  • React:设置 State 或设置 Prop 而无需重新渲染

    Problem 目前 我有一个LoginForm具有 成功 处理函数的组件handleOnSuccess 然后将其链接到父组件onTokenUpdate由 令牌更新 处理函数定义的属性handleUpdateToken 问题是setStat
  • HighCharts - 两个 Y 轴,一个具有最大值

    我在使用 Highcharts 时遇到问题 我已将右 Y 轴设置为 min 0 和 max 100 它是 但它不起作用并生成 125 百分比 怎么了 http jsfiddle net SdTcU http jsfiddle net SdT
  • ajaxStart 和 ajaxStop 与 fetch API 等效

    我正在尝试将 API 调用从使用 jQuery ajax 迁移到使用 Fetch API 我使用 jQuery ajaxStart 和 ajaxStop 在服务器调用期间显示加载旋转器 我正在运行多个并行服务器请求 我希望旋转器在第一个请求
  • 仅在页面加载时执行 Javascript,而不是回发 (SharePoint)

    我正在尝试在 SharePoint 网站上的自定义页面上加载页面时执行一些 JavaScript 它使用当前用户填充人员选择器 问题是代码也在回发时执行 这是我不希望的 因为它会重置人员选择器的任何更改 我尝试过使用if IsPostBac
  • 嵌套对象的 setState

    我有一个嵌套对象作为状态 并且在组件中有一个表单 我正在考虑每次用户在表单中输入某些内容时更新状态 并且为了避免为每个输入创建许多函数 我正在考虑使用 switch 创建单个函数 使用 switch 创建单一函数是个好主意吗 如何更新对象的

随机推荐

  • 将日期转换为特定格式的字符在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 操作员 是具有最高