[英]Javascript variable initialization and declaration order
使用打字稿,我發現當我使用數組解構時,它會生成一些異常的代碼,其中變量初始化先於其聲明,即在以下示例控制台中顯示“未定義”
(function () {
var _a = 1;
_c = _a;
var _c;
})();
console.log(_c);
> ReferenceError: _c is not defined
為什么變量_c不成為全局變量?
在Javascript中,在實際運行任何代碼之前,將所有變量聲明提升到聲明它們的作用域的頂部。 所以你的代碼示例:
(function () {
var _a = 1;
_c = _a;
var _c;
})();
console.log(_c);
評估如下:
(function () {
var _a;
var _c;
_a = 1;
_c = _a;
})();
console.log(_c);
因此, _c
在實際被引用或使用之前在本地聲明,因此它不是隱式全局的,因為它在引用它的范圍內聲明並且提升確保在該范圍的開頭聲明它。 var _c;
聲明在范圍內。
以下是有關起重概念的一些參考資料:
函數下的所有變量均為局部變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.