2

我正在查看一些缩小的 javascript 代码(来自 github),并且代码有一个看起来像的块

h = function(a, b, c, d) {
        var e, h, i, j, k, l, m = this;
        return i = $("#js-frame-loading-template").clone().show(), l = c === "back" ? 350 : 500, j = i.find(".js-frame-loading-spinner").hide() // more stuff here

我很好奇这段代码为什么/如何工作,因为在 return 语句之后有变量声明

4

1 回答 1

6

让我向您介绍逗号运算符

语句右侧的所有return内容都是一个表达式,由多个“子表达式”组成,以逗号分隔:

return a, b, c, d;

每个子表达式从左到右求值,最后一个的值是整个表达式的结果。即在这种情况下返回最后一个表达式的结果(评估结果d以及您的示例中隐藏的任何内容// more stuff here)。

将多个表达式压缩为一个是一种“技巧”。


挑剔:

[...] 因为在 return 语句之后有变量声明

该行中没有变量声明,只有赋值表达式。您不能在那里有var语句(变量声明),因为逗号运算符(和return语句)仅适用于表达式,而不适用于语句。

于 2013-01-02T21:20:17.657 回答