可变类型:为什么具有相同内容的数组在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

Ruby:

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

Javascript:

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

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

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

ECMAScript按照ECMAScript语言规范的要求执行。Ruby按照Ruby语言规范的规定执行。Python按照Python语言规范的指示执行。

最新更新