javascript中的奇怪语法

时间:2011-11-30 19:11:09

标签: javascript syntax mootools

我正在调试别人写的一些代码(使用Mootools作为基础库),我遇到了这个函数:

[note, $H(options.text).getKeys()].flatten().each(function(option){
  // bunch of stuff happening
});

我之前从未见过这种语法,括号和$ H表示法(例如[note, $H(options.text).getKeys()])。任何人都可以解释它的工作原理或指向我的参考吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

这基本上将两个数组聚合在一起。举个例子,这个代码:

var a = [1,2,3];
var b = [4,5,6];
var c = [a, b].flatten();
alert(c);

数组[1,2,3][4,5,6]被合并(或“展平”)为一个数组1,2,3,4,5,6

在您的代码中:

[note, $H(options.text).getKeys()].flatten()

note(可能是另一个数组)和任何getKeys()返回都被展平为一个数组。然后,跨每个元素执行一个函数。

<强>更新

$H functionMootools中的效用函数,它是Hash()的快捷方式。

答案 1 :(得分:1)

[note, $H(options.text).getKeys()]

最有可能成为:

[note, ["string1", "string2"]]

所以它返回一个数组。所以["whatever note is", ["Another array", "of objects"]]需要扁平化为:

["whatever note is", "Another array", "of objects"]