return语句后的javascript变量声明

return语句后的javascript变量声明,javascript,Javascript,我在看一些缩小的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()

我在看一些缩小的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语句之后有变量声明

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

return a, b, c, d;
从左到右计算每个子表达式,最后一个子表达式的值是整个表达式的结果。即,在本例中返回最后一个表达式的结果(计算
d
的结果以及
//示例中的更多内容中隐藏的内容)

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


挑剔:

[…]因为return语句后面有变量声明


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

阅读有关逗号运算符的详细信息:。简而言之:
return
语句右侧的所有内容都是一个表达式,并返回最后一个“子表达式”的值。顺便说一句,该行中没有变量声明,只有赋值。@FelixKling感谢您的澄清。你能把这个答案加上吗,这样就可以被投票/接受了?我希望找到一个重复的答案(我肯定它存在),但好吧…;)