![](/img/trans.png)
[英](Javascript) Global Variable inside function is not changing value before https request
[英]In Javascript, global variable is not changing value inside a function
var a = 1;
function b() {
function a() {}; // local scope
a = 10; // global scope
}
b();
alert(a);
它警報1而不是10。我想知道為什么會這樣嗎?
函數名稱和變量在Javascript中本質上是相同的。 您可以通過以下方式聲明函數:
var a = function () {};
在大多數情況下,它與function a() {}
相同。 兩者都會在當前范圍內創建一個符號 ,並使該符號的值成為函數。
你在做什么是你的陰影,全球a
用自己的本地a
。 此局部變量a
是通過var a
還是function a
定義的都沒有區別。
您的代碼與此相同:
var a = 1;
function b() {
var a = function () {}; // local scope
a = 10;
}
b();
alert(a);
因此,您的局部作用域函數的聲明將創建一個名為a
的新局部變量,該變量最初具有分配給它的函數,但隨后將其重新分配為值10
。 此內部分配未觸及較高范圍的a
。
如果外a
定義是在全球范圍內,那么你可以分配給它:
window.a = 10;
如果它不在全局范圍內,則它已被a
的內部定義“隱藏”,並且無法直接從內部范圍到達外部a
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.