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