1.imply global 暗示全局變量:即任何變量,如果變量未經(jīng)聲明就賦值,此變量就為全局對象所有。
如 a = 10 , 則 window.a = 10;
如function test() {
var a = b = 123;
}
test();
先將123賦給b,然后聲明a,然后將b賦給a;
console.log(b) --> 123;
console.log(a) --> undefined
2.一切聲明的全局變量,全是window的屬性, 如
var a = 123,則window.a = 10;
console.log(a) --> console.log(window.a)
window就是全局的域
三、預(yù)編譯
預(yù)編譯發(fā)生在函數(shù)執(zhí)行的前一刻
局部(AO)
1.創(chuàng)建AO對象 (Activation Object)(執(zhí)行期上下文)
2.找形參和變量聲明,將變量和形參名作為AO屬性名,值為undefined
3.將實(shí)參值和形參統(tǒng)一
4.在函數(shù)體里面找函數(shù)聲明,值賦予函數(shù)體
全局(GO) window === GO
1.生成了一個GO對象 Global Object
2.找變量聲明,將變量作為GO屬性名,值為undefined
4.在函數(shù)體里面找函數(shù)聲明,值賦予函數(shù)體
例一:(局部)
<script type="text/javascript">
function fn(a) {
console.log(a); //f a() {}
var a = 123;
console.log(a); //123
function a() {}
console.log(a); //123
var b = function () {}
console.log(b); //f () {}
function d() {}
}
fn(1);
</script>