Сегодня я видел тестовый вопрос, который реализует следующие грамматические функции:
var a = add (2) (3) (4); // 9
Это применение функции высшего порядка. Анализ: добавить (2) вернуть функцию, добавить (2) (3) также вернет функцию и, наконец, добавить (2) (3) (4) вернуть числовое значение.
выполнить:
Функция add (num1) {return function (num2) {return function (num3) {return num1+num2+num3;}}} add (2) (3) (4); // 9В этом нет ничего плохого, это может отлично решить проблему.
Оптимизация: здесь обсуждается только часть о функциях высшего порядка. Для лучших решений могут быть реализованы бесконечные вызовы.
// Метод 1 Функция add (a) {var temp = function (b) {return add (a + b);} temp.valueof = temp.toString = function () {return a;}; return temp;} add (2) (3) (4) (5); // 14 // Метод. num; return add;} add.valueof = add.toString = function () {return add.num}; var a = add (3) (4) (5) (6); // 18 // Метод 2 Комментарий: Фактически, он эквивалентен, но пользовательский атрибут применяется к функции для хранения значения. ; (function () {var sum = 0; функция add (num) {sum+= num; return add;} add.valueof = add.toString = function () {return sum;} window.add = add;}) () var a = add (3) (4) (5) (6); // 18 [/code]Это то, что я написал в статье, которую я видел в [url = http: //www.cnblogs.com/wengxuesong/p/5577683.html] Blog Garden [/url]. Я никогда не понимал метода один и метод второй, и я также пытался вывести [Code = JavaScript, JavaScript Code, True] Функция 9 в консоли
var temp = function () {} temp.valueof = function () {return 2;} temp.toString = function () {return 'hahh';} alert (temp); console.log (2 * temp);Когда он должен быть преобразован в строку, будет вызван тостронг, и значение будет вызвано, когда его необходимо преобразовать в число.