JS作用域

JS模塊化

JS中變量聲明問(wèn)題

JS為弱類型,編譯型語(yǔ)言
聲明提前
在JS中,聲明語(yǔ)句會(huì)被提前到文件首

//運(yùn)行結(jié)果為2
a=2;
console.log(a);
//var a=3;被分成兩部分,var a; a=3;其中var a;會(huì)被提到文件首
var a=3;

//函數(shù)聲明
function f(){}

//var f1為聲明,f1=function(){}為賦值
//function f(){}不是聲明函數(shù),是函數(shù)表達(dá)式類型
var f1=function(){};

//變量聲明會(huì)提前,但是執(zhí)行時(shí)會(huì)報(bào)錯(cuò),TypeError:f is not a function ...
f();
var f=function(){
    alert("ok");
}

靜態(tài)類型為強(qiáng)類型,動(dòng)態(tài)類型為引用類型

作用域

頂級(jí)作用域—全局變量
JS中屬性名可以被覆蓋。

//window.a為全局變量
var a=3;
console.log(window.a);

在一個(gè)作用域以內(nèi),使用變量時(shí),如果本作用域以內(nèi)沒有時(shí),向上查找,直到到頂層變量,如果頂層沒有時(shí),就在頂層聲明一個(gè)變量。
注意在任何情況下使用變量時(shí),使用var聲明。

//自執(zhí)行函數(shù)
(function(){
var a=3;
function f(){
    //綁定事件可寫
}   
})();
//初始化全局變量,綁定事件

閉包

閉包特性:定義時(shí)作用域。

var a=5;
(function(){
var a=4;
function f(){
    console.log(a);
}
window.createf=function(){
    return f;
};
})();

var f= createf();
f();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容