具有多个逗号分隔值的 return 语句
return statement with multiple comma separated values
可能的重复项:
Javascript语法:逗号是什么意思?
这种模式返回什么?它是如何工作的?
return myfunc(), myobj.myvar = someobj.prop, myobj
我以前没有遇到过这种模式,但一直在查看 Bing 地图 Ajax 控件,并多次注意到这种模式。
据我了解,不会返回多个值。那么这种模式有什么作用呢?退货是什么?这种模式有什么好处?
它是逗号运算符。它计算其左侧操作数,丢弃结果,计算其右侧操作数,并将其作为其结果值。它是从左到右的关联,因此a, b, c
计算a
,然后b
,然后c
,并将c
的结果作为其值。
在您的示例中,它与以下内容完全相同:
myfunc();
myobj.myvar = someobj.prop;
return myobj;
有些人真的喜欢在一条线上做事,即使没有客观理由。您给出的示例没有任何好处,实际上它令人困惑,因为它使前两位看起来与最终将返回的值相关,而它们没有。(在你告诉我们它是缩小代码之前,我写过;显然,人类不清楚只是源代码中的一个问题,而不是缩小的代码。
既然你已经说它是一个缩小器:如果这是条件块的一部分,缩小器可能得到的非常小的好处是:它可以保存一两个字符。如果我们假设长形式看起来像这样:
if (someCondition) {
myfunc();
myobj.myvar = someobj.prop;
return myobj;
}
。使用逗号运算符,缩小器可以执行以下操作(63 个字符):
if(someCondition)return myfunc(),myobj.myvar=someobj.prop,myobj
。而不是这个(65 个字符):
if(someCondition){myfunc();myobj.myvar=someobj.prop;return myobj}
。在不更改代码功能的情况下,如果后面是}
或其他一些适当的字符(或文件末尾)以触发末尾的自动分号插入。否则,它将需要第一个字符上的;
,但这仍然保存了一个字符。
号运算符计算(从左到右)表达式,然后返回最后一个结果,在本例中为myobj
标识符的求值。
你可以这样做,消除一些大括号,如果这对你很重要......
if (true)
;// do something
else
return myfunc(), myobj.myvar = someobj.prop, myobj
。而不是...
if (true)
;// do something
else {
myfunc();
myobj.myvar = someobj.prop;
return myobj;
}
例子中,myobj应该被返回,因为之前的每一件事都被执行了
myfunc();
myobj.myvar = someobj.prop;
return myobj;
- 函数在return语句之前返回空对象
- 当使用return语句时,循环不会中断
- return语句在JavaScript中使用而不中断函数
- 从 JavaScript 调用的小程序方法中的 return 语句
- 为什么我的子函数需要“return”语句以避免出错?父函数没有“返回”,也没有错误
- 具有多个逗号分隔值的 return 语句
- 在 JS 中显式指定 return 语句与根本没有 return 语句有什么区别
- Return语句在ajax调用之前调用
- dojo中的return语句是如何工作的
- 发送ajax请求时出现return语句问题
- 有return语句和没有return语句的函数之间有区别吗
- return语句在完成任务之前返回
- 在return语句中编写代码,在字符串中添加点
- Gulp任务中“return”语句和“callback”引用的用途
- Eval在执行带有return语句的函数时总是返回错误
- 无法理解return语句执行后的流程
- forEach中的return语句不会停止函数的执行
- 为什么我的代码执行return语句后定义的函数?
- 为什么return语句后面的代码可以用javascript访问
- 将函数放入return语句中