[英]Javascript variable memory allocation
在 Javascript wrt 聲明和初始化中分配給變量的內存是在哪個階段?
console.log(a); // Prints undefined
var a;
a = 20;
對於上面的代碼片段,即使在代碼執行開始之前, a = undefined 也是如此。 這是否意味着在創建沒有值( undefined )的變量環境期間分配了內存? 如果是,在代碼執行階段,當 JS 引擎遇到a = 20
是否將新的內存塊分配給 a 指向的 20 ?
這叫做吊裝。
解釋器在執行代碼之前為變量和函數聲明分配內存
把它想象成好像你所有的變量,在未來聲明為var
,首先被讀取並設置為undefined
。 稍后對變量值的更改將分配給同一個變量。
console.log(a); // undefined var a; a = 20; console.log(a); // 20
請注意,您只能使用var
來執行此操作—— let
和const
在它們的聲明點是只讀的。
console.log(b); // ReferenceError: b is not defined
console.log(c); // ReferenceError: c is not defined
let c = 1;
console.log(d); // ReferenceError: d is not defined
const d = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.