JavaScript闭包和意外的-未定义的-返回
当我试图理解JS闭包时,我编写了以下代码:JavaScript闭包和意外的-未定义的-返回,javascript,closures,undefined,Javascript,Closures,Undefined,当我试图理解JS闭包时,我编写了以下代码: const outer=函数(){ 设a=10,c=100; 常量内部=函数(){ 设b=20; console.log(a+b);//第5行(30) }; 返回内部; }; 设K=outer(); console.log(K());//第10行(未定义)在代码中,K是执行outer的结果,在本例中,它是函数inner 当您执行K(之前已分配了定义为internal的功能)时,您将获得控制台输出30,即a+b 但是,您也会记录K的返回值,因为内部的函
const outer=函数(){
设a=10,c=100;
常量内部=函数(){
设b=20;
console.log(a+b);//第5行(30)
};
返回内部;
};
设K=outer();
console.log(K());//第10行(未定义)
在代码中,K
是执行outer
的结果,在本例中,它是函数inner
当您执行K
(之前已分配了定义为internal
的功能)时,您将获得控制台输出30,即a+b
但是,您也会记录K
的返回值,因为内部的函数没有返回值,所以您会得到未定义的
尝试修改代码,使内部返回一个值,您就会明白我的意思:
const outer=函数(){
设a=10,c=100;
常量内部=函数(){
设b=20;
控制台日志(a+b);
返回a*b;//如果没有此返回,则内部的返回值未定义。
}
返回内部;
}
设K=outer();
console.log(K());
我现在明白了,没有“return”语句的函数将返回未定义的,非常感谢。@Adamdjennaba当答案回答您的问题时,您可以单击答案左上角的灰色复选标记将其标记为已回答K
不返回任何内容。它只是console.log
s。更改控制台日志(a+b)代码>到返回a+b
insideInsider
,它将按照您的期望进行控制台操作。