JS:为什么第二个函数没有存储值调用?

时间:2019-01-23 14:23:10

标签: javascript closures

我尝试使用以下方法实例化第一个功能:

handleErrorResponse(error) { // use the information from the error object here }

这分别注销了let foo = first(22)console.log(22, "value")

编辑:

如何在其中执行第二个功能?

console.log(77, "newVal")

2 个答案:

答案 0 :(得分:1)

第二个函数从第一个函数返回。

第一个函数的返回值分配给foo

因此:foo()foo(with, some, arguments)

  

为什么第二个函数没有调用存储值?

因为:

  • 您根本不称呼
  • 您有一个名为newVal的变量,它被定义为second的参数,该变量掩盖了{{1}中用newVal声明的名为let的变量}}。

答案 1 :(得分:0)

首先,不确定您要在这里实现什么。

您正在调用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()的本地函数,不会被调用。