簡體   English   中英

JavaScript 塊 scope 與 function

[英]JavaScript block scope vs function

以下片段是否完全相同? 如果沒有,那有什么尊重?

var x = (function() {
    ... //a
    return function(){
        ... //b
    };
})();

對比

var x;
{
    ... //a
    x = function(){
        ... //b
    };
}

有一個主要區別:在 JavaScript 中,塊不會引入新變量 scope。 因此,您不能在// a代碼塊中定義私有變量。 相比

var x = (function() {
    var v = 42;
    return function(){
        return v;
    };
})();
// v; would yield ReferenceError: v is not defined, so you need to call x

var x;
{
    var v = 42;
    x = function(){
        return v;
    };
}
// v is 42 here, that's not what's intended.

一個主要區別是在執行...//a時, x 不存在。 現在在您的情況下,在這兩種情況下它都是undefined的,但一般來說,可以在...//a期間訪問 x 變量,而在第一種情況下則不是。

否則在你的情況下它是一樣的。 畢竟在您的情況下,代碼基本上被重構為單獨的 function ,就像在任何其他語言中一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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