簡體   English   中英

為什么函數內的javascript全局變量顯示錯誤?

[英]why does a javascript global variable within function show an error?

我在Javascript的numPrinter函數中放入了一個全局變量。
但是如果我不放numPrinter(); 在放置console.log(i);之前console.log(i);


它是a global variable .. global ..而且我不明白numPrinter()之后global variable是如何工作的

return i;沒有return i; numPrinter();

var numPrinter = function(){

    i = 30;
};

console.log(i);  // ReferenceError: i is not defined

numPrinter();
console.log(i);  // 30

假設您是JavaScript引擎,從上至下閱讀以下代碼:

  1. 我們讀的第一件事是numPrinter函數。 目前沒有() ,因此numPrinter僅被定義而不被調用。
  2. 繼續向下,第一個console.log(i); 被讀取。 這里調用它導致ReferenceError: i is not defined ,因為numPrinter還沒有被調用所以i暫時還無法訪問。
  3. 再往下,我們遇到numPrinter(); 在此,JS引擎讀取()並調用numPrinter函數。 現在,我們可以訪問i因為未聲明的變量始終成為全局變量。
  4. 最后,第二個console.log(i); 被讀取並打印出30的結果,因為在numPrinter函數之外可以全局訪問i

默認情況下,js中的變量是全局變量,因此如果您將smth編寫為:

let i = 30

在您的功能中,它將是本地的

暫無
暫無

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

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