помощь в разборе скрипта JS

всем привет!

подскажите, пожалуйста, по следующему примеру: введите сюда описание изображения

каким образом параметр функции guess(passwordGuess) принимает значение tryGuess(nope) ?

как я размышляю?

tryGuess есть ссылка на функцию makePassword. Вызывая просто tryGuess мы передаем "secret" в параметр функции makePassword. это вроде понятно. но как так получается, что мы в tryGuess указали параметр "nope" и он оказался не в makePassword, а в guess ?

Помогите разобраться, пожалуйста.

И если можно, скиньте хороший ресурс, где доступно объясняются функциональные выражения, колбэки, замыкания и тп

makePassword(password) {
  return function guess(passwordGuess) {
  return (passwordGuess === password);
  };
 }
var tryGuess = makePassword("secret");
console.log("Guessing 'nope': " + tryGuess("nope"));
console.log("Guessing 'secret': " + tryGuess("secret"));

Ответы (1 шт):

Автор решения: Gleb Raychenkov

Ниже два примера основанные на твоем коде которые наглядно показывают механику.

Пример #1:

function makePassword (password) {
    return  password
    }

var tryGuess = makePassword("secret")

console.log(`tryGuess is ${typeof(tryGuess)} = ${tryGuess}`)
//выводим тип tryGuess и ее значение

Пример #2:

function makePassword (password) {
    return  function guess(passwordGuess) {
        return (`${password} + ${passwordGuess}`)
    }
}

var tryGuess = makePassword("secret")

console.log(`tryGuess is ${typeof(tryGuess)} = ${tryGuess}`)
console.log(`tryGuess is ${typeof(tryGuess)} = ${tryGuess("nope")}`)
//выводим тип tryGuess и ее значение, после выводим еще раз с подставленным значением nope
→ Ссылка