![](/img/trans.png)
[英]Why does JavaScript allow function declarations after the return statement?
[英]javascript variable declarations after return statement
我正在查看一些精简的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
的结果和示例中// more stuff here
隐藏在// more stuff here
任何// more stuff here
)。
将多个表达式压缩为一个是“技巧”。
鸡蛋里挑骨头:
[...]因为return语句后有变量声明
该行中没有变量声明 ,只有赋值表达式。 您在那里可能没有var
语句(变量声明),因为逗号运算符(和return
语句)仅适用于表达式,而不适用于语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.