前言
javascript中沒(méi)有塊級(jí)作用域(es6以前),javascript中作用域分為函數(shù)作用域和全局作用域。并且,大家可以認(rèn)為全局作用域其實(shí)就是Window函數(shù)的函數(shù)作用域,我們編寫的js代碼,都存放在Window函數(shù)內(nèi)(這是個(gè)假設(shè)),也就是說(shuō)javascript中只有函數(shù)作用域(前面假設(shè)做前提下)。
作用域是什么
作用域是一個(gè)盒子,盒子內(nèi)部的變量只能在當(dāng)前盒子中使用,作用域盒子是可以嵌套的,內(nèi)部盒子的變量對(duì)父級(jí)盒子是不可見(jiàn)的,因?yàn)楹凶臃忾]了他們并且盒子不透明,但是盒子可以看到父級(jí)盒子內(nèi)部定義的變量,因?yàn)閮?nèi)部這個(gè)盒子與父級(jí)的變量同處一個(gè)空間,他們是互相看得到的。就像css中的盒模型一樣。
以上這個(gè)圖分為3層作用域,全局作用域、foo函數(shù)作用域、bar函數(shù)作用域,我們可以清晰的看到三層作用域各自的范圍。
this是什么
我們經(jīng)常用到this,this是代表著什么?this是代表著當(dāng)前方法執(zhí)行的環(huán)境上下文,那么何為環(huán)境上下文,通俗的說(shuō),誰(shuí)調(diào)用了函數(shù),誰(shuí)就是這個(gè)函數(shù)的環(huán)境上下文。例如:
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式