这些是我试图从中学习的插件的代码片段。变量被重构以最小化文件大小因此变得无意义。
function sort(b) {
for (var d = [], c = 0; c < this.gs.length; c++) for (var g = 0; g < this.gs[c].length; g++) d.push(this.gs[c][g]);
b && d.reverse();
return d
}
我假设这个排序函数接受未定义或b的某个参数,并返回一个二维数组。
b&amp;&amp; d.reverse()是什么意思?这是否意味着如果b有一个值,反向d?
另一个表达是:
b = this.sort(g == "left" || g == "top");
这是什么意思?
答案 0 :(得分:1)
是否意味着什么?
b && d.reverse()
是什么意思?是b
是否有值,反转d
?
正确。这是 smart-ass 版本的写作
if (b) d.reverse();
reverse()
是一个就地操作,因此它会更改它所操作的数组(因此代码不关心它的返回值)。
另一种说法以类似的方式起作用:
b = this.sort(g == "left" || g == "top");
评估从g == "left" || g == "top"
开始。这会产生true
或false
,具体取决于g
的值。结果传递给sort()
,其返回值随后存储在b
。
答案 1 :(得分:0)
b&amp;&amp; d.reverse()表示如果b不是false,null,undefined或0,则执行d.reverse()。换句话说:如果我们没有为函数传递任何参数(b)或者我们传递false / 0,那么d.reverse()就不会被执行。
第二个表达式只是将true或false传递给sort()方法。这只是正常的OR操作,其中g必须是“左”或“顶”。