return语句后的javascript变量声明

时间:2013-01-02 21:15:23

标签: 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() // more stuff here

我很好奇这个代码为什么/如何工作,因为在return语句

之后有变量声明

1 个答案:

答案 0 :(得分:6)

<强> Let me introduce you to the comma operator

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

return a, b, c, d;

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

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


挑剔:

  

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

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