簡體   English   中英

Javascript閉包:函數返回“未定義”而不是值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM