这些javascript表达式意味着什么?

时间:2011-09-08 11:15:42

标签: javascript expression

这些是我试图从中学习的插件的代码片段。变量被重构以最小化文件大小因此变得无意义。

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");

这是什么意思?

2 个答案:

答案 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"开始。这会产生truefalse,具体取决于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必须是“左”或“顶”。