“==”对象相等的标准定义是什么?

2024-06-25

There seems与普遍理解之间的不匹配==以及它的实际作用。给出这个问题的一些背景:

typeof new Number(1); // returns object
typeof new String(1); // returns object
typeof 1;             // returns number

看来,两者Number and String are of object类型。这并不奇怪。然而事情变得有趣了==应该返回true当操作数相等时不管他们的类型。

根据a somewhat权威描述 https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators:

运营商试图 将对象转换为原始值、字符串或数字值, 使用对象的 valueOf 和 toString 方法。如果这个尝试 转换对象失败,会生成运行时错误。

简而言之,==应该通过对象的原始值来比较对象。出奇:

var numa = new Number(1);
var numb = new Number(1);
var stri = new String(1);

numa.toString() == stri.toString(); // returns true, as expected
numa.valueOf() == stri.valueOf();   // returns true, as expected

numa == stri; // returns false (?!)
numa == numb; // returns false (?!!!)

numa == numa; // returns true, as expected

var numx = 1;

numa == numx; // returns true (?)
numb == numx; // returns true (?)
stri == numx; // returns true (?)

当两个操作数都是对象时,就会出现==操作员都不使用toString() nor valueOf()但还有别的事。

对象相等的标准定义是什么==?


我相信你在那里看到的,以及“有点权威的描述”中遗漏的,是==当且仅当其比较数是基元时,尝试将对象转换为基元。如果两个操作数都是对象,则将它们作为对象进行比较,并且仅当它们是相同的对象(即相同的实例 - 具有相同属性的不同对象是不同的,正如您在numa == numb case).

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

“==”对象相等的标准定义是什么? 的相关文章

  • MobileSafari 的正确触摸按钮行为

    MobileSafari 通常具有不正确的 HTML 按钮行为 不正确的含义 不像 iOS 原生按钮 正确的按钮行为如下 用户触摸按钮 按钮突出显示 用户将手指拖出按钮 按钮变暗 用户将手指拖回按钮 按钮突出显示 用户将手指拖出按钮并释放
  • 浏览器安全错误:“由于安全违规,此页面无法显示”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在一家网络开发公司工作 我为我们的一些营销人员设计了一个页面 以便将自定义页脚添加到我们应用程序中的各个页面 在部署我们的产品供
  • javascript 可以从父页面访问 iframe 元素吗?

    我的页面上有 iframe iframe 和父页面位于不同的域中 父页面上的 javascript 代码可以访问此 iframe 内的元素吗 如果页面来自不同的域 则不应该这样做 浏览器安全沙箱应该阻止这种类型的访问 当两个页面来自不同的时
  • Javascript 字符串/整数比较

    我在 HTML 中存储一些客户端参数 然后需要将它们作为整数进行比较 不幸的是我遇到了一个我无法解释的严重错误 该错误似乎是我的 JS 将参数读取为字符串而不是整数 导致我的整数比较失败 我生成了一个错误的小例子 我也无法解释 运行时以下返
  • 客户端 GitHub 身份验证

    我正在使用 Javascript 对 GitHub 进行基本身份验证 例如 以下 shell 命令从 Github 获取令牌 curl i u uaername password k d scopes repo https api gith
  • 如何在react中返回点击元素的属性?

    我想知道是否有一种简单的方法来获取单击元素的属性React js function App return
  • JavaScript 变量带有一个我需要在 Html.ActionLink 中使用的 ID

    我的 jQuery 代码中有一个 JavaScript 变量 其中包含一个我需要在我的Html ActionLink但它不起作用 Html ActionLink Genomf r AnswerForm AnswerNKI new id go
  • $(document).ready 回调何时执行?

    假设我们附加一个 click http api jquery com click 锚点的处理程序 a 中的标签 document ready http api jquery com ready 打回来 该处理程序将取消默认操作 遵循href
  • jQuery:“$(this).next().next()”有效,但“$(this).next('.div')”无效

    好吧 我正在尝试将这组信息单独隐藏 这有效 arrow click function this next next slideToggle img class arrow src https via placeholder com 40 h
  • 如何在 Chrome 中将 Set 转换为数组?

    如何将集合转换为数组 https stackoverflow com questions 20069828 how to convert set to array给出了将 Set 转换为 Array 的三个答案 目前在 Chrome 浏览器
  • GraphQL 错误字段类型必须是输入类型,但得到:

    这是突变 const createNotebook mutationWithClientMutationId name CreateNotebook inputFields token type GraphQLString details
  • 在 Javascript 中实现 Zobrist 哈希

    我需要在 Javascript 中为国际象棋引擎实现 Zobrist 哈希 我想知道实现此目的的最佳方法是什么 现在 我不是计算机科学家 也从未上过正式的算法和数据结构课程 所以如果我在这方面有点偏离 我很抱歉 据我了解 我需要一个 64
  • jQuery onclick 隐藏其父元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想隐藏 li tag on a 使
  • 在 Bootstrap 选择器上使用 jQuery 取消选择选项

    我对一些 UI 元素使用 Bootstrap SelectPicker 它允许用户选择多个选项并将其呈现在段落标签中的屏幕上 他们还应该能够删除选定的选项 这是我的代码 用于将选定的选项渲染到屏幕上 以便每个选项旁边都会显示一个 X 单击它
  • JQuery mouseover 函数多次触发

    我很长时间以来一直使用这种方法来为整个类 按钮等 设置事件 div bigButton mouseover function this style backgroundColor dfdfdf 然而 在进行一些测试时 我刚刚注意到 当将鼠标
  • Lighthouse 多个 URL

    我需要对一个网站进行全面审核 但我想知道是否有任何方法可以让 Lighthouse 做到这一点 我知道他们不支持完整的站点审核或多个 URL 但我发现可以使用 bash 脚本来完成 因此 我将不胜感激对此案的任何帮助 或者您可能会推荐任何灯
  • 为什么我的数据没有存储到我的 Firebase 实时数据库中?

    我正在尝试为网络应用程序制作一个注册页面 这会将数据发送到 firebase 数据库 我已阅读官方 firebase 文档并按照说明写入数据 但什么也不会写 在我的数据库控制台中 它显示的所有内容都是空 而不是我的数据 我没有收到控制台错误
  • 即使切换它时,hasClass 也始终返回 false

    我有以下代码
  • Promise链基本问题

    我正在尝试理解 Promise 我创建了一些有效的承诺链 而另一些则无效 我已经取得了进步 但显然缺乏基本概念 例如 以下承诺链不起作用 这是一个愚蠢的例子 但说明了问题 我正在尝试在链中使用 Node 的函数 randomBytes 两次
  • 在用户单击之前图像不会绘制在画布上?

    我使用执行类似以下操作的函数绘制几张图像 context drawImage img width 2 1 height 2 1 width height 我读过 我需要等待图像加载后才能绘制它 如下所示 img onload functio

随机推荐

  • flextable 中的有条件加粗值

    是否可以根据 tstat 将估计值加粗 着色 对于 ex t stat 的粗体估计值大于 1 96 这是继续我之前的问题 https stackoverflow com questions 69780809 pivot wider crea
  • Java 9 中的 --add-exports 和 --add-opens 有什么区别?

    由于新的模块系统 与所有以前的 Java 版本不同 Java 9 jdk 9 170 默认情况下不允许应用程序查看 JDK 中的所有类 为了解决这个问题 java命令行提供了一个新的参数 add exports它允许打破封装 如下所示 ja
  • 尝试访问 Nexus 私有存储库时,maven 收到“未授权”

    我在 EC2 实例上设置了一个私有 Nexus 存储库管理器 并按照互联网上流传的有关如何设置 Maven 项目来使用它的各种说明进行操作 我还禁用了匿名帐户 我可以通过以下方式连接和复制存储库curl U username passwor
  • python @property setter 委托

    我有一个有一堆的物体 property其上的 getter 和 setter 我想委托给该对象 包括委托获取和设置 我还希望能够覆盖委托类中的一些设置器 如上所述的委派here http effbot org pyfaq what is d
  • 具有 jQuery ui 主题的自动样式复选框

    这里是 jQuery 菜鸟 我正在尝试编写一个脚本 当我编写时
  • 如何在已排序的日期列表中查找缺失的日期?

    在Python中 如何找到排序的日期列表中所有缺失的日子 使用集合 gt gt gt from datetime import date timedelta gt gt gt d date 2010 2 23 date 2010 2 24
  • CodeIgniter 3.1.2 中重定向后会话数据丢失

    我有一个 CodeIgniter 应用程序仍在开发中 但我意识到当我登录并在会话中设置用户数据时 它会被设置但在重定向后消失 因此 重定向后我无法访问会话数据 这是我的登录脚本 public function login if empty
  • 即使具有位置权限,Android BLE startDiscovery() 回调也不会触发

    该应用程序的目标版本为 22 最低版本为 18 并且在 Lollipop 上按预期运行 启动 Marshmallow 应用程序需要 BLE 的 精细 和 粗略 权限 我已经添加了它们 但回调没有被触发 Android 清单
  • 如何在 emacs 中解除 ctrl+c 的绑定

    我是 emacs 的新用户 并且因为 ansi term multi term 而使用 emacs 现在我必须输入 ctrl C 两次才能将其发送到学期 我想在 emacs 中取消绑定 CTRL C 快捷键 以便我可以将其直接发送到该术语
  • Kotlin如何将文件移动到其他目录?

    假设我有以下文件层次结构 C Users sanpleuser Downloads gt test txt C 用户 样本用户 文档 我想要实现的是将 test txt 文件从下载移动到文档 有人可以帮我解决这个问题吗 Kotlin 为 J
  • Laravel 中无效后防止重定向到主页

    我正在使用 Laravel 5 3 开发 RESTful API 因此我正在使用我的控制器测试一些功能和请求 我需要做的一件事是在数据库中添加字段之前验证用户发送的请求 因此 我使用自定义 FormRequest 来验证它 当我在 Post
  • Jetpack Compose:布局检查器未显示重组计数菜单

    Android Studio 大黄蜂补丁 3 从这个页面 它说我可以看到重组计数 https developer android com jetpack compose tooling recomposition counts https
  • 通过systemd服务启动烧瓶

    有一个systemd服务文件 etc systemd system flask app service Unit Description flask app After network target Service User root Wo
  • VueJS:以冒号为前缀的 html 属性表示什么?

    Example
  • 回调在 Angular2/Firebase 中生成“TypeError:这是未定义的”

    我试图了解这里发生了什么以及为什么如果我以某种方式调用函数时会收到错误 而当我以不同的方式调用函数时却不会收到错误 这是首先产生错误的方式 播放器 service ts 文件 in the Injectable i have private
  • 从 subversion 标签自动构建

    我正在尝试自动化工程组的构建过程 作为自动化的一部分 我试图达到这样的程度 应用遵循某种模式的特定标签的行为将启动一个自动化过程 该过程将执行以下操作 查看源代码 从模板创建构建脚本 构建项目 我非常确定我可以使用 subversion 中
  • 将 Base64 解码的 NSData 转换为 NSString

    我正在尝试对 Base64 数据进行编码和解码 但是在解码 Base64 数据时 它返回一堆十六进制值 但我无法使用 NSlog 显示或打印原始可读字符串 下面的代码无法打印任何内容 只是空的 有人可以帮忙吗 谢谢 gt gt NSStri
  • 如何指定 JBoss AS7 中的 Web 应用程序使用哪个安全域?

    我正在使用 JBoss AS7 JSF 2 1 我正在尝试使用数据库登录模块对我的 Web 应用程序中特定资源的用户进行身份验证 在standalone xml中有3个安全域 other jboss web policy 和 jboss e
  • OOP:什么时候它是一个对象?

    我正在尝试理解面向对象 我当然明白一点 但有时我并不是百分百清楚 你如何决定什么应该变成一个对象 另一个大的整个对象的小对象部分 或者什么不值得成为一个对象 或者也许它应该只是那个大的整个对象的属性 对于一扇门来说 我猜门把手应该是一个独立
  • “==”对象相等的标准定义是什么?

    There seems与普遍理解之间的不匹配 以及它的实际作用 给出这个问题的一些背景 typeof new Number 1 returns object typeof new String 1 returns object typeof