首页 > 解决方案 > 可变类型:为什么在 Python 和 Ruby 中具有相同内容的数组被认为是相等的,而不是 Javascript?

问题描述

我一直在学习 Python、Ruby 和 Javascript 中的可变性。我的假设是,当在两个数组或两个具有相同值的对象之间使用比较运算符时,Ruby 和 Python 的行为类似于 Javascript。为什么 Python 和 Ruby 在比较具有相同值的数组时返回 true 而 Javascript 不返回?

例如:

Python:

>>> x = [1,2,3,4,5]
>>> y = [1,2,3,4,5]
>>> x == y
True

红宝石:

> x = [1,2,3]
> y = [1,2,3]
> x == y
=> true

Javascript:

> x = [1,2,3]
> y = [1,2,3]
> x === y
false

标签: javascriptpythonruby

解决方案


为什么 Python 和 Ruby 在比较具有相同值的数组时返回 true 而 Javascript 不返回?

因为它们是三种完全不同的编程语言,没有理由期望它们的行为相同。

ECMAScript 做了 ECMAScript 语言规范所说的它应该做的事情。Ruby 做了 Ruby 语言规范所说的它应该做的事情。Python 做了 Python 语言规范所说的它应该做的事情。


推荐阅读