可能重复:
Javascript语法:逗号是什么意思?
这种模式会回归什么?它是如何工作的?
return myfunc(), myobj.myvar = someobj.prop, myobj
我之前没有遇到过这种模式,但一直在查看Bing Maps Ajax Control并且多次注意到这种模式.
据我了解,不会返回多个值.那么这种模式有什么作用呢?什么回来了?这种模式的好处是什么?
T.J*_*der 142
这是逗号运算符.它评估其左侧操作数,抛出结果,评估其右侧操作数,并将其作为结果值.它的左到右的关联,所以a, b, c
求值a
,然后b
,然后c
,并采取结果c
作为其值.
在您的示例中,它完全像:
myfunc();
myobj.myvar = someobj.prop;
return myobj;
Run Code Online (Sandbox Code Playgroud)
有些人真的更喜欢在一条线上做事,即使没有客观理由.你给出的例子没有任何好处,事实上它让人感到困惑,因为它看起来像前两位与最终返回的值有关,而它们却没有. (在你告诉我们它是缩小代码之前,我写过这个;显然,对人类不清楚只是源代码中的一个问题,而不是缩小代码.)
因为你已经说过它是一个缩小器:如果这是条件块的一部分,缩小器可能获得的非常小的好处:它可以保存一个或两个字符.如果我们假设长形看起来像这样:
if (someCondition) {
myfunc();
myobj.myvar = someobj.prop;
return myobj;
}
Run Code Online (Sandbox Code Playgroud)
...使用逗号运算符,minifier可以执行此操作(63个字符):
if(someCondition)return myfunc(),myobj.myvar=someobj.prop,myobj
Run Code Online (Sandbox Code Playgroud)
...而不是这个(65个字符):
if(someCondition){myfunc();myobj.myvar=someobj.prop;return myobj}
Run Code Online (Sandbox Code Playgroud)
...不改变代码的功能,如果后面是一个}
或一些其他适当的字符(或文件结束)来触发自动分号插入结束.否则,它将需要;
第一个,但仍然保存一个字符.
小智 11
的逗号操作符求值(左到右)的表达,然后将其返回最后结果,在这种情况下将是评价myobj
标识符.
如果这对你很重要,你可以做到这一点消除一些花括号......
if (true)
;// do something
else
return myfunc(), myobj.myvar = someobj.prop, myobj
Run Code Online (Sandbox Code Playgroud)
......而不是......
if (true)
;// do something
else {
myfunc();
myobj.myvar = someobj.prop;
return myobj;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14781 次 |
最近记录: |