Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выразительный javascript. Функции высшего порядка (https://javascript.ru/forum/misc/59586-vyrazitelnyjj-javascript-funkcii-vysshego-poryadka.html)

Kroy 17.11.2015 20:53

Выразительный javascript. Функции высшего порядка
 
Добрый день

Продираюсь сквозь эту книгу.

Застрял на этой главе

http://habrahabr.ru/post/241155/

Помогите понять пожалуйста, что делает эта функция

function noisy(f) {
  return function(arg) {
    console.log("calling with", arg);
    var val = f(arg);
    console.log("called with", arg, "- got", val);
    return val;
  };
}
noisy(Boolean)(0);
// → calling with 0
// → called with 0 - got false

FINoM 17.11.2015 21:00

Kroy, пост не читал, но по коду видно, что функция создаёт функцию-"конвертер" значения.

noisy(Boolean) - возвращает функцию, которая конвертирует аргумент в Boolean:

var converter = noisy(Boolean);
console.log(converter(0), converter(1)); // false, true


В noisy можно передать любую функцию (в данном случае передана функция Boolean).

var converter = noisy(function(v) {
  return 'Hello, ' + v;
});
console.log(converter('Kroy'), converter('World')); // "Hello, Kroy", "Hello, World"

Kroy 18.11.2015 00:47

Спасибо

Вроде начинает доходить

А почему функцию вызывают с двумя парами скобок?

FINoM 18.11.2015 01:18

Цитата:

Сообщение от Kroy
А почему функцию вызывают с двумя парами скобок?

Первые скобки создают функцию и возвращают её, вторые - вызывают эту функцию.


Тут немного о карринге


Часовой пояс GMT +3, время: 21:52.