看JS的源码的时候,发现有如下一个句子:
var t = this, a = t.data.cart_list, i = t.data.mch_list, c = [], e = [], s = [], r = [];
  
for (var l in a) a[l].checked && (c.push(a[l].cart_id), r.push({
      cart_id: a[l].cart_id
}));for (var l in 0 < c.length && s.push({
            mch_id: 0,
            goods_list: r
        }), i) {
//...
}其中的:
for (var l in 0 < c.length && s.push({
            mch_id: 0,
            goods_list: r
        }), i) {
//...
}
实在无法理解 for in 还可以这么写,看不懂,哪位大神能看下这个句子怎么理解?

解决方案 »

  1.   

    你这是用工具混淆压缩后的代码,这种混淆压缩会在不改变代码执行结果的情况下重构代码的书写格式,让代码极难阅读。
    这个代码就等价于
    0 < c.length && s.push({
                mch_id: 0,
                goods_list: r
    });
    for (var l in i) {
    //...
    }
    这主要看i前面的逗号运算符(,),逗号运算符可以把一个表达式分成两个表达式,两个表达式从左到右的顺序被执行,并返回右边表达式的值。
    如下面执行了两个prompt,a获得第二个输入的值
    a = ( prompt("输入第一个值",1)  ,  prompt("输入第二个值",2) );
    alert(a);