[英]Why does this global Javascript variable behave differently inside and outside of a function?
[英]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引擎,從上至下閱讀以下代碼:
numPrinter
函數。 目前沒有()
,因此numPrinter
僅被定義而不被調用。 console.log(i);
被讀取。 這里調用它導致ReferenceError: i is not defined
,因為numPrinter
還沒有被調用所以i
暫時還無法訪問。 numPrinter();
在此,JS引擎讀取()
並調用numPrinter
函數。 現在,我們可以訪問i
因為未聲明的變量始終成為全局變量。 console.log(i);
被讀取並打印出30
的結果,因為在numPrinter
函數之外可以全局訪問i
。 默認情況下,js中的變量是全局變量,因此如果您將smth編寫為:
let i = 30
在您的功能中,它將是本地的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.