为什么 JavaScript 中“0 === -0”为真?

2024-03-28

在最近的一篇文章中http://wtfjs.com/ http://wtfjs.com/。一位作者在没有解释的情况下写了以下内容,这恰好是真实的。

0 === -0 //returns true

我对 === 运算符的理解是,如果操作数指向同一个对象,它会返回 true。

此外,- 运算符返回对操作数负值的引用。根据此规则,0 和-0 不应该相同。

那么,为什么 0 === -0 ?


===并不总是意味着指向同一个对象。它对对象执行此操作,但在值类型上,它会比较值。因此这是如何工作的:

var x = 0;
var y = 0;
var isTrue = (x === y);
document.write(isTrue); // true

JavaScript 使用 IEEE 浮点标准,其中 0 和 -0 是两个不同的数字,但是,ECMAScript标准 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf声明解析器必须将 0 和 -0 解释为相同的:

§5.2(第 12 页)

数学运算(例如加法、减法、求反、乘法、除法)以及本节后面定义的数学函数应始终理解为计算数学实数的精确数学结果,其中不包括无穷大和不包含与正零不同的负零。本标准中模拟浮点运算的算法包括显式 必要时处理无穷大和有符号零并执行舍入的步骤。如果数学运算或函数应用于浮点数,则应理解为应用于该浮点数表示的精确数学值;这样的浮点数必须是有限的,如果是+0或-0则对应的数学值就是0.

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

为什么 JavaScript 中“0 === -0”为真? 的相关文章

  • 从 thymeleaf 获取数据到模态引导程序、jquery

    我正在尝试获取模态视图的 id 这是为了更新 onclick 元素 但我找不到方法 知道如何为 boostrap 5 完成此操作 或我可以用其他方法吗 谢谢 tr a inactivate a div class modal fade mo
  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • 关闭选项卡时要求确认[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我在某些浏览器上关闭页面时 我希望出现一个消息框 并询问我是否真的要关闭页面 有两个按钮 如果我单击No那么这个标签就不会被关闭 我怎样
  • React js Stripe 结账不起作用

    我正在尝试在 React js 应用程序中呈现条带结账默认表单
  • 不和谐机器人 |不和谐.js |类型错误:无法读取未定义的属性“长度”

    我正在制作一个 Discord 机器人 并且正在使用 CodeLyon 的视频作为参考 该错误位于我的 message js 文件中 该文件包含以下内容 require dotenv config create cooldowns map
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比

随机推荐

  • 如何确定使用Delphi的系统中是否安装了MSXML6?

    我有一个应用程序取决于MSXML6 http www microsoft com download en details aspx id 3988 overview 在大多数机器上 当部署应用程序时 这个包已经安装了 但在少数情况下 MSX
  • iPhone:如何判断线程是否为主线程? [复制]

    这个问题在这里已经有答案了 如何确定方法内的当前线程是主线程 还是只是异步创建的线程 身份证能告诉我吗 像这样 NSThread isMainThread
  • Python,如何将 statuses/update_with_media 发布到 Twitter?

    我能够在 Python 中成功发布状态更新 推文 import urllib import oauth2 as oauth token oauth Token access token access token secret consume
  • 如何在 Android 上将 2D 图像转换为 3D? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要将 2D 图像显示为 3D 图
  • Flask 应用程序中的 js 文件保存在哪里?

    我是 Flask 的新手 并使用它在 localhost 5000 处提供 index html 目前我只有 3 个文件 index html angular js 和 app js 它们都在同一个文件夹中 我将 index html 提供
  • 通过 Google Apps API 创建电子邮件

    我想从我的代码动态创建电子邮件地址 并在一段时间后处理它们 我在整个网络上进行了搜索 但没有找到任何允许人们创建新电子邮件帐户的 API 端点 我正在使用 Google Apps for Businesses 因此他们的文档制作得非常好并由
  • 从 jQuery 集合中获取每个元素的属性值,放入数组中

    我怎样才能获得所有属性 例如href 匹配 jQuery 选择器的所有元素 就像是 var idArray someClass map function return this id get join 工作演示 http jsfiddle
  • Rmarkdown 中评论的快捷方式?

    简单的问题 有人知道 Rmd 中评论的快捷键吗 在 Knit 中 这可以使用 CTRL C 来完成 它会在编写和编码环境中生成注释行 不幸的是 这在 Rmd 中不起作用 目前我必须输入 我正在使用 R studio 在 markdown 部
  • Python Shell:写入一个字节并从串口读取十进制数据

    问题描述 我正在尝试使用 rs232 检索存储在设备上的所有数据 How 对于这个特定设备 我需要 Step 1 发送一个字节 0x80 uInt8 8 位无符号整数 通过串行端口 COM5 并期望收到 0x81 作为响应 Step 2 发
  • C++ 中向量 的 ArgMin?

    我想找到indexC 中的最小值std vector
  • 禁用警报(); [复制]

    这个问题在这里已经有答案了 我无法控制的页面上生成的代码包含警报 有没有 jQuery 或其他方法来禁用alert 工作 我想要禁用 修改的正在生成的 JavaScript 是 function fndropdownurl val 1317
  • SendGrid 发送的密码重置电子邮件链接缺少点(域名上)

    我在 Ruby 和 Rails 框架上使用 SendGrid 邮件程序 在密码重置电子邮件模板中 我们发送一个密码重置链接 其格式如下 https subdomain domainname com password reset token
  • 更改 Exoplayer 中的播放速度

    我正在寻求实现一个具有变速播放 1 0x 1 25x 1 5x 的音频播放器 就像目前市场上典型的有声读物播放器一样 我想使用 Google 的 Exoplayer 库作为我的音频播放器库 但它们似乎不支持变速播放 关于如何实现这个的任何想
  • AVCaptureSession 音频不适用于长视频

    我正在使用 AVCaptureSession 录制带有音频的视频 对于短视频来说一切似乎都正常 但由于某种原因 如果我录制的视频长度超过 12 秒左右 音频就不起作用 Edit 因为这个答案仍然得到点赞 这个答案可以缓解问题 但问题的可能根
  • LoadLibrary 失败:第一次机会异常 0xC0000139(未找到 DLL)- 如何调试?

    我有一个 dll mytest dll 当通过加载时LoadLibrary 返回 NULL 并且 127 作为GetLastError 如果我在 mytest dll 上使用 DependencyWalker 它会报告它应该正确加载并且所有
  • 参数异常应该进行单元测试吗?

    我知道这个问题与之前发布的其他问题非常相似 但我想以适当的方式讨论这个主题 您认为 明显 的异常应该进行单元测试吗 对于明显的异常 我的意思是 例如 由于空参数或空字符串或负数而导致的异常 在我们单元的业务逻辑使我们明显看出这些异常总是会在
  • jQuery 包装集中元素的顺序是否始终与元素在标记中出现的顺序匹配?

    jQuery 包装集中元素的顺序是否保证与元素在标记中出现的顺序相匹配 我问这个问题是因为我需要对一组嵌套元素执行操作 并且我需要始终按照嵌套顺序执行操作 我可以使用以下命令运行该操作吗 each 匹配集上的迭代器并始终获得正确的顺序 或者
  • 有选择地禁用 swaggerUI 中的“尝试一下”

    尽管这里对该主题进行了很长的讨论 https github com swagger api swagger ui issues 156 https github com swagger api swagger ui issues 156 我
  • 等待页面加载

    我正在尝试创建一个等待页面加载的方法javascript 但我有一个错误 可能我没有正确使用该方法 public static void WaitForLoad this IWebDriver driver int timeoutSec 1
  • 为什么 JavaScript 中“0 === -0”为真?

    在最近的一篇文章中http wtfjs com http wtfjs com 一位作者在没有解释的情况下写了以下内容 这恰好是真实的 0 0 returns true 我对 运算符的理解是 如果操作数指向同一个对象 它会返回 true 此外