我正在查看一些缩小的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语句
之后有变量声明答案 0 :(得分:6)
<强> Let me introduce you to the comma operator 强>
return
语句右侧的所有内容都是一个表达式,由多个“子表达式”组成,用逗号分隔:
return a, b, c, d;
从左到右计算每个子表达式,最后一个表达式的值是整个表达式的结果。即在这种情况下返回最后一个表达式的结果(评估d
的结果以及示例中// more stuff here
中的任何隐藏)。
将多个表达式压缩成一个是“技巧”。
挑剔:
[...]因为在return语句之后有变量声明
该行中没有变量声明,只有赋值表达式。你不能有var
语句(变量声明),因为逗号运算符(和return
语句)只适用于表达式而不是语句。