Hoje eu vi uma pergunta de teste que implementa as seguintes funções gramaticais:
var a = add (2) (3) (4); // 9
Esta é a aplicação de uma função de ordem superior. Análise: Add (2) retornará uma função, Add (2) (3) também retornará uma função e, finalmente, add (2) (3) (4) retornará um valor numérico.
concluir:
função add (num1) {return function (num2) {return function (num3) {return num1+num2+num3;}}} add (2) (3) (4); // 9Não há nada de errado com isso, ele pode resolver o problema perfeitamente.
Otimização: Somente a parte sobre funções de ordem superior é discutida aqui. Para melhores soluções, as chamadas infinitas podem ser implementadas.
// método 1 função add (a) {var temp = function (b) {return add (a + b);} temp.valueof = temp.toString = function () {return a;}; retorna temp;} add (2) (3) (4) (5); // 14 // método 2. = num; return add;} add.valueof = add.toString = function () {return add.num}; var a = add (3) (4) (5) (6); // 18 // Método 2 Comentário: De fato, é equivalente a, mas um atributo personalizado é aplicado à função para armazenar o valor. ; (function () {var sum = 0; função add (num) {sum+= num; return add;} add.valueof = add.ToString = function () {return sum;} window.add = add;}) () var a = add (3) (4) (5) (6); // 18 [/código]Foi o que escrevi no artigo que vi em [url = http: //www.cnblogs.com/wengxuesong/p/55577683.html] blog jardim [/url]. Eu nunca entendi o método e o método dois, e também tentei produzir o [código = javascript, JavaScript Code, True] função 9 no console
var temp = function () {} temp.valueof = function () {return 2;} temp.toString = function () {return 'hahh';} alert (temp); console.log (2 * temp);Quando precisar ser convertido em uma string, a tostragem será chamada e o ValueOf será chamado quando precisar ser convertido em um número.