In JavaScript wird eine globale Variable, nachdem sie global deklariert wurde, zu einer Eigenschaft des globalen Objekts mit demselben Namen. Nachdem eine lokale Variable in einer Funktion deklariert wurde, wird sie jedoch nicht zu einem Attribut der Funktion (Objekt), sondern muss mit ?Funktionsname.Attributname“ deklariert werden.
可以這樣理解:
在函數(shù)內(nèi)部聲明的變量屬于函數(shù)執(zhí)行上下文對象,而不是函數(shù)對象
全局環(huán)境下聲明的變量屬于全局執(zhí)行上下文對象,這個上下文對象就是全局環(huán)境對象
歷史遺留問題,建議使用嚴格模式消除迷惑。
'use strict';
var v = 2;
console.log(window.v); // undefined
如果你是說這樣
`function test(){
var a = 1; // 你說的a是test的屬性。
this.a = 1;// 這才是函數(shù)的屬性,因為在JS里,“萬物”皆對象(可能夸張了。)
//如果,還不明白,請自覺翻閱,“神奇的this”,"作用域"等基礎(chǔ)JS章節(jié)
}`
//更新,錯誤改正。
題主好好看基礎(chǔ)。
JavaScript中,在全局聲明全局變量后,會成為全局對象的一個同名屬性。在函數(shù)中聲明局部變量后,它就變成局部對象,也就是函數(shù)的屬性,所以要先通過全局訪問函數(shù)再訪問函數(shù)中的局部變量。