javascript - 可变类型:为什么在 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
解决方案
为什么 Python 和 Ruby 在比较具有相同值的数组时返回 true 而 Javascript 不返回?
因为它们是三种完全不同的编程语言,没有理由期望它们的行为相同。
ECMAScript 做了 ECMAScript 语言规范所说的它应该做的事情。Ruby 做了 Ruby 语言规范所说的它应该做的事情。Python 做了 Python 语言规范所说的它应该做的事情。
推荐阅读
- php - 在 WordPress 插件中获取模板部分
- php - 如何将数组作为url的参数传递并完整接收
- haskell - `stack ghci app:exe:executable` 的 cabal 等价物是什么?
- mysql - MySql 约束,两列在每一行上具有不同的值
- java - Spring boot:如何将命令行参数传递给注释值?
- ios - 调整 UITableView 以允许使用键盘
- javascript - 应用程序启动时是否可以通过控制台验证我的凭据?
- flexbox - 如何在 VBox 中居中 Text 或 FormattedText 并让文本在每一行的相同位置开始?
- linux - 如何将 korn 作业限制为仅从晚上 10 点到凌晨 12 点运行
- python - 为什么我的 for 循环包含一个简单的 while 循环只运行两次?而且很差