2016-05-06 4 views
-1

Как использовать закрытие для достижения этого ???Использование закрытий javascript для добавления двух чисел

addTogether (2) (3);

Мне также нужна та же функция, чтобы вернуть нормальное сложение как в addTogether (2,3) возвращает 5.

+0

Я должен спросить, по какой возможной причине вам это понадобилось? Меня заинтриговало то, что потенциальный вариант использования мог бы/был бы. – IMTheNachoMan

ответ

5

Вы можете написать что-то вроде:

function addTogether(a, b) { 
    if (b === undefined) { 
    return function (b) { return a + b; } 
    } else { 
    return a + b; 
    } 
} 

Однако, возвращая функцию или номер будет (в лучшем случае) для ваших пользователей. Я предлагаю всегда возвращать функцию, но позволяю ее вызывать без параметров (только немного лучше):

function addTogether(a, b) { 
    if (b === undefined) { 
    return function (c) { return a + c; } 
    } else { 
    return function () { return a + b; } 
    } 
} 
+0

FWIW: 'b == null' обрабатывает' b === undefined || b === null' –

+0

Нет, единственный раз '==' будет возвращать 'true', когда один из операндов' null 'или 'undefined' является, если другой операнд также является" null "или' undefined' .. . '0 == null; // false. Это почти единственный раз, когда я использую '==' в реальном коде. Я согласен с тем, что проверка «null», вероятно, не нужна. –

+0

@squint huh, вы правы. Я предположил, что '==' будет относиться к 0 как к ложному, чтобы соответствовать нулю, но, по-видимому, нет. – ssube

Смежные вопросы