gpt4 book ai didi

javascript - 比较在 Coffeescript/Javascript 和 Ruby 中给出了不同的结果

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:11 25 4
gpt4 key购买 nike

例子:

[42] == [42]

比较的结果给出了不同的结果:

CS/JS: false
Ruby: true

另一方面:

42 == 42

给出结果:

CS/JS: true
Ruby: true

这背后的原因是什么?

最佳答案

其他回答者在解释 JavaScript/CoffeeScript 等式语义方面做得很好。 (CoffeeScript 的 == 编译为 JavaScript 的更严格的 ===,但在这种情况下没有区别。)

Ruby 的情况更复杂:Ruby 中的一切都是对象,因此每个对象都有一个 == 方法,原则上,它可以做任何事情。在数组的情况下,它查看另一个数组,检查它是否具有相同的长度,然后检查是否 x == y 对于每个 x 本身和 y 在另一个数组中。

如果你想模拟 Ruby 的行为,编写一个函数来实现这一点非常简单:

deepEquals = (arr1, arr2) ->
return false unless arr1.length is arr2.length
for i in [0...arr1.length]
if arr1[i] instanceof Array and arr2[i] instanceof Array
return false unless deepEquals(arr1[i], arr2[i])
else
return false if arr1[i] isnt arr2[i]
true

关于javascript - 比较在 Coffeescript/Javascript 和 Ruby 中给出了不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7570164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com