странный синтаксис в JavaScript - PullRequest
7 голосов
/ 30 ноября 2011

Я работаю над отладкой некоторого кода, написанного кем-то другим (используя Mootools в качестве базовой библиотеки), и я наткнулся на эту функцию:

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

Я никогда раньше не видел этот синтаксис с скобками и нотацией $ H (например, [note, $H(options.text).getKeys()]). Кто-нибудь может объяснить, как это работает, или указать мне ссылку на него?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 30 ноября 2011

Это в основном объединяет два массива вместе. Взять, к примеру, этот код:

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 - это служебная функция в Mootools , которая является ярлыком для Hash ().

1 голос
/ 30 ноября 2011
[note, $H(options.text).getKeys()]

, скорее всего, становится:

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

так что он возвращает массив. Так что ["whatever note is", ["Another array", "of objects"]] должно быть сведено к:

["whatever note is", "Another array", "of objects"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...