立即執(zhí)行函數(shù)
(function(){
console.log("函數(shù)執(zhí)行");
})();
(function(a,b){
console.log("函數(shù)執(zhí)行=",a+b);
})(1,2);
變量聲明提前
使用var關(guān)鍵字聲明的變量麻养,會在所有的代碼執(zhí)行之前聲明
但聲明變量時(shí)不適用var關(guān)鍵字褐啡,則變量不會被提前聲明,聲明后并沒有賦值
函數(shù)聲明提前鳖昌,函數(shù)表達(dá)式不會被提前聲明
調(diào)用函數(shù)時(shí)創(chuàng)建函數(shù)作用域备畦,函數(shù)執(zhí)行完后作用域銷毀
每創(chuàng)建一次函數(shù)就會創(chuàng)建一個(gè)新的函數(shù)作用域,他們之間是互相獨(dú)立的
在函數(shù)作用域中可以訪問到全局變量
在全局作用域無法訪問函數(shù)作用域的變量
當(dāng)在函數(shù)作用域中操作一個(gè)變量時(shí)许昨,它會先在自身作用域?qū)ふ叶危绻芯湍苤苯邮褂茫绻麤]有則向上級作用域?qū)ふ腋獾担钡秸业饺肿饔糜蚶蚰眨绻谌肿饔糜蛑袥]有找到,則會報(bào)錯(cuò)ReferenceError
在使用var關(guān)鍵字聲明的變量,會在函數(shù)中所有的代碼執(zhí)行前聲明
作用域
作用域指一個(gè)變量的作用范圍
在js中有兩種作用域:
全局作用域:
直接編寫在script標(biāo)簽中的js代碼俐银,都是全局作用域
全局作用域在頁面打開時(shí)創(chuàng)建尿背,在頁面關(guān)閉時(shí)銷毀
全局作用域中有一個(gè)全局對象windows,它代表一個(gè)瀏覽器窗口捶惜,由瀏覽器創(chuàng)建田藐,我們可以直接使用
在全局作用域中
創(chuàng)建的變量都作為windows對象的屬性保存
創(chuàng)建的函數(shù)都作為windows對象的方法保存
全局作用域中的變量都 是全局變量
在頁面的任意部分都可以被訪問