gpt4 book ai didi

javascript - Coffeescript array.sort(a,b) 生成失败的 JS

转载 作者:搜寻专家 更新时间:2023-11-01 04:14:04 26 4
gpt4 key购买 nike

我在使用 coffeescript(版本 1.11.1)时遇到了一些我难以描述的问题。我只是想按字段对对象数组进行排序,我可以这样做:

data.sort (a,b) ->
if a.name < b.name then -1 else if a.name > b.name then 1 else 0

这会产生以下 javascript:

data.sort(function(a, b) {
if (a.name < b.name) {
return -1;
} else if (a.name > b.name) {
return 1;
} else {
return 0;
}
});

太棒了。但在我的第一次尝试中,我改为这样做:

data.sort(a,b) ->
if a.name < b.name then -1 else if a.name > b.name then 1 else 0

生成的 javascript 是:

data.sort(a, b)(function() {
if (a.name < b.name) {
return -1;
} else if (a.name > b.name) {
return 1;
} else {
return 0;
}
});

由于 javascript 非常有用,它会悄无声息地失败(至少在 Chrome 中)并导致周围的函数过早返回。有点沮丧,但我会克服的。

首先,我想确认这是预期的行为。我想可能是这样,我脑袋里闪过一些模糊的想法,想知道为什么会这样,但我希望能得到更坚定的理解。这应该如何描述或者什么术语与语言的这个特性相关?

最佳答案

这是预期的行为。


CoffeeScript 支持以下所有内容:

  • (a, b) -> 5 表示函数

  • -> 5 不带参数的函数的表示法,

  • f(a, b) 函数调用的表示法,以及

  • f a 用于函数调用 的表示法(隐式括号)。

那么如何使用函数参数 -> 5 调用函数调用 f(a, b) 的结果?

答案是——

f(a, b) -> 5

——正如你所注意到的,它看起来很像——

f (a, b) -> 5

—转换为调用 f,将函数 (a, b) -> 5 作为参数传递。

关于javascript - Coffeescript array.sort(a,b) 生成失败的 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40090687/

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