[英]Javascript Closure: function returning “undefined” instead of a value
我正在嘗試學習JavaScript閉包,並為輸出感到困惑。 我敢肯定,這應該容易回答。 當我運行以下代碼片段時,輸出為“ undefined”。
function foo(){
var x = 5;
function bar(){
return x; // returning value of x
}
baz(bar); // output is "undefined"
}
function baz(fn){
fn();
}
但是,如果我運行以下代碼,則x的正確值將打印在控制台上。
function foo(){
var x = 5;
function bar(){
console.log(x); // printing value of x on console
}
baz(bar); // output is 5
}
function baz(fn){
fn();
}
所以我對為什么返回x的值時的輸出是“未定義”感到困惑,但是當x的值在控制台上打印時,x的正確值就被打印了。 非常感謝有人可以解釋這種行為。
修改您的代碼為此:-
function foo(){
var x = 5;
function bar(){
return x; // returning value of x
}
return baz(bar); // returns 5
}
function baz(fn){
return fn();
}
console.log(foo())
您沒有在“ baz”函數中返回“ bar”函數返回的值,並且“ foo”函數也應返回baz函數返回的值。您可以將其保存在變量中,也可以控制台foo返回的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.