JavaScript的全局變量


全局變量

與某些編程語言不同,JavaScript並沒有一種可以聲明全局變量的關鍵字,有的只是全局變量的功能。

  • 在最外層的作用域,也就是windowvar聲明的變量就是全局變量。

  • 在函數內部,不用關鍵字聲明變量,直接賦值,這時也是個全局變量

var a = 1;
function bar(){
	var a = 10;
	function foo(){
		console.log(a); // 10
		console.log(window.a); // 1
	}
	foo()
}
bar();

因為在最外層的變量,會被作為window的屬性,前提是用var聲明,這時候就算函數內部聲明了相同的變量,依然可以通過window對象找到外部定義的變量,這就有了全局變量的功能。

var b = 2;

function bar(){
	b = 10; //通過LHS引用的最外層的b,並賦值,這不是聲明
	d = 4; // 全局,作為window的屬性
	console.log(b); // 10
}
bar();
console.log(b); // 10
console.log(d); // 4

這是因為不成功的LHS引用,在非嚴格模式下,會自己創建一個全局變量。如果是不成功的RHS引用就會直接報錯。

雖然這樣也能聲明,但最好不要,因為在嚴格模式下,是不允許不使用關鍵字就聲明變量的。

所以真的想要全局變量,請使用第一種方法。

至於局部變量,那就多了,函數作用域和塊作用域里聲明的都是局部變量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM