JavaScript 关闭和意外 - 未定义 - return
JavaScript closures and an unexpected - undefined - return
当我试图理解 JS 闭包时,我写了这段代码:
const outer = function() {
let a = 10, c = 100;
const inner = function() {
let b = 20;
console.log(a + b); // line 5 (30)
};
return inner;
};
let K = outer();
console.log(K()); // line 10 (undefined)
控制台的输出:
30 ( line 5)
undefined ( line 10 )
the console outputs the result ( 30 )
它指向代码的(第 5 行)(这对我来说似乎很合理)
在那之后(这就是我不明白的)它 returns undefined 当它回到最后一行代码(第 10 行)
任何人都可以澄清这个 JS 行为吗?
在您的代码中,K
是执行 outer
的结果,在本例中是函数 inner
.
当你执行K
时(已经赋值了前面定义为inner
的函数),得到30的控制台输出,即a + b
.
但是,您还记录了 K
的 return 值,并且因为您的 inner
函数没有 return 值,所以您得到 undefined
.
尝试修改您的代码以获得 inner
return 一个值,您就会明白我的意思:
const outer = function(){
let a = 10, c = 100 ;
const inner = function(){
let b = 20 ;
console.log( a + b ) ;
return a * b; // Without this return, the return value of inner is undefined.
}
return inner ;
}
let K = outer();
console.log( K() ) ;
当我试图理解 JS 闭包时,我写了这段代码:
const outer = function() {
let a = 10, c = 100;
const inner = function() {
let b = 20;
console.log(a + b); // line 5 (30)
};
return inner;
};
let K = outer();
console.log(K()); // line 10 (undefined)
控制台的输出:
30 ( line 5)
undefined ( line 10 )
the console outputs the result ( 30 )
它指向代码的(第 5 行)(这对我来说似乎很合理) 在那之后(这就是我不明白的)它 returns undefined 当它回到最后一行代码(第 10 行) 任何人都可以澄清这个 JS 行为吗?
在您的代码中,K
是执行 outer
的结果,在本例中是函数 inner
.
当你执行K
时(已经赋值了前面定义为inner
的函数),得到30的控制台输出,即a + b
.
但是,您还记录了 K
的 return 值,并且因为您的 inner
函数没有 return 值,所以您得到 undefined
.
尝试修改您的代码以获得 inner
return 一个值,您就会明白我的意思:
const outer = function(){
let a = 10, c = 100 ;
const inner = function(){
let b = 20 ;
console.log( a + b ) ;
return a * b; // Without this return, the return value of inner is undefined.
}
return inner ;
}
let K = outer();
console.log( K() ) ;