JS: Почему у 2-й функции нет сохраненного значения? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь создать первую функцию с помощью:

let foo = first(22)

это завершает работу console.log(22, "value") и console.log(77, "newVal") соответственно.

EDIT:

Как мне выполнить вторую функцию там?

 function first(value) {
    console.log(value, "value")
    let newVal = value + 55;
    console.log(indigo, "indigo")

    return function second(secondArgPassed) {
        return newVal + secondArgPassed
     }

 }

let foo = first(22);
foo(34)

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Во-первых, не уверен, чего вы здесь добиваетесь.

Функция, которую вы вызываете first (), имеет один параметр. Внутри функции вы создали другую функцию, которая ничего не будет делать, как вы ее еще не вызывали. Также индиго не определено.

function first(val){
 return val
}

function second(val){
 return val+22;
}

console.log(first(22));
console.log(second(55));

Вы можете вызвать это внутри функции с проверкой второго существующего параметра (в приведенном ниже примере он просто должен существовать):

function first(val, newval){
 console.log(val, "value");
 if(!!newval){
 console.log(val+55,"value");
 }
}

first(22,22);

/* outputs:
"22","value"
"77","value"
*/

Стоит почитать о JavaScript: https://www.w3schools.com/js/js_scope.asp

Ваша функция second () является локальной для first () и не вызывается.

0 голосов
/ 23 января 2019

Вторая функция возвращается из первой функции.

Возвращаемое значение первой функции присваивается foo.

Таким образом: foo() или foo(with, some, arguments).

Почему у 2-й функции нет сохраненного значения?

Потому что:

  • Вы вообще не звоните
  • У вас есть переменная с именем newVal, определенная в качестве аргумента для second, которая маскирует переменную с именем newVal, которая объявлена ​​с let в более широкой области действия first.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...