Size: a a a

JavaScript Noobs — сообщество новичков

2020 July 15

D

Danila in JavaScript Noobs — сообщество новичков
function add(numberA){
    let value = numberA;

    function adder(howMuch){
         value+=howMuch;  
         return value;
    }
   
  return adder

}

add(1)(2) // 3


Это понятнО?
источник

D

Danila in JavaScript Noobs — сообщество новичков
То же самое почти
источник

А

Алексей in JavaScript Noobs — сообщество новичков
да
источник

D

Danila in JavaScript Noobs — сообщество новичков
Ну и всё. Дальше от этого делаем два шага. Первый - возвращаем из adder не текущее значение, а ещё раз саму функцию adder

function add(numberA){
    let value = numberA;

    function adder(howMuch){
         value+=howMuch;  
         return adder;
    }
   
  return adder

}

Теперь мы можем вызывать

add(1)(2)(3)(4) // Вызывать можем, но значение оттуда уже не вытащить, оно живёт внутри

Это понятно?
источник

А

Алексей in JavaScript Noobs — сообщество новичков
источник

D

Danila in JavaScript Noobs — сообщество новичков
Типа да
источник

D

Danila in JavaScript Noobs — сообщество новичков
На самом деле, они все складывают в одно value
источник

А

Алексей in JavaScript Noobs — сообщество новичков
воот. как это работает return f и f берет след (b)c,d... после sum (a)
источник

А

Алексей in JavaScript Noobs — сообщество новичков
Danila
На самом деле, они все складывают в одно value
ну вроде понятно. все из-за окружения
источник

D

Danila in JavaScript Noobs — сообщество новичков
Алексей
воот. как это работает return f и f берет след (b)c,d... после sum (a)
Так и работает

Если ты что-то вернул из функции - ты же можешь это сразу исполоьзовать.

function getObject(){

   return {test:1, value:2}

}

getObject().test
getObject().value
источник

D

Danila in JavaScript Noobs — сообщество новичков
Можешьже?
источник

А

Алексей in JavaScript Noobs — сообщество новичков
мы перезаписываем ключ, меняя значение
источник

🦜

🦜 in JavaScript Noobs — сообщество новичков
Алексей
Извините, проверьте меня. Вроде разобрался.
например sum(a)(b)(c)(d)
Сначала идет currentSum = a, потом возвращаем функцию и следующая скобка (b) в sum становится автоматически  аргументом f и так далее (c) и (d). Когда вызываем alert(sum(a)(b)(c)(d)) , то после всех операций (return f, currentSum a+b+c+d) переводит значения объекта f в строку и выводит , а если писать console.log, то просто вернет в json формате sum как объект, так как console.log не распознает метод toString (особенность alert) ?
можно вернуть туже самую функцию с перезаписью valueOf
источник

D

Danila in JavaScript Noobs — сообщество новичков
Алексей
мы перезаписываем ключ, меняя значение
Ключ? Значение?
источник

D

Danila in JavaScript Noobs — сообщество новичков
Лол
источник

А

Алексей in JavaScript Noobs — сообщество новичков
Danila
Ключ? Значение?
ну тип да. функция объект . переменная тоже как свойства объекта, ток другого
источник

D

Danila in JavaScript Noobs — сообщество новичков
Алексей
ну тип да. функция объект . переменная тоже как свойства объекта, ток другого
А, ты про valueOf/toString?
источник

D

Danila in JavaScript Noobs — сообщество новичков
Да, ты прямо на функции определяешь этот метод. Функция же тоже объект
источник

А

Алексей in JavaScript Noobs — сообщество новичков
это просто особенность языка
источник

А

Алексей in JavaScript Noobs — сообщество новичков
я учил си в универе, сейчас каникулы. Си сильно отличается)
источник