ES6項(xiàng)目學(xué)習(xí)筆記(一)作用域 定義的補(bǔ)充完善

作用域是什么掉瞳?
抱著這個疑問,咱們不妨先看看下面的一段代碼

var name = 'tony';
function hello(age){
    console.log(name);
    console.log(age);
    console.log(fullName);
}
hello();
//tony
//undefined
//fullName is not defined

實(shí)際運(yùn)行結(jié)果

如果不了解作用域的看到代碼可能會和我一樣疑惑行冰,為什么fullname“no defined”而age是"undefined",有什么區(qū)別某宪,以及為啥是"no defined"?
有了這樣的疑問我們再來看看我們所看到的一些解釋:
作用域解釋1

作用域解釋2

從這個兩個解釋里面我們可以提取出來兩個要點(diǎn)锐朴,規(guī)則 集合

規(guī)則其實(shí)不難理解兴喂,就如同我們?nèi)嗽谏鐣幸粯樱艿礁鞣N規(guī)則限制,而在js中處處存在的變量衣迷,也同樣受到一套規(guī)則所限畏鼓,同樣有“生老病死”(變量生命周期),同樣有自己的“人生軌跡”(作用域鏈)壶谒。
在js中變量所受的作用域規(guī)則主要有了 全局作用域云矫,局部作用域塊狀作用域汗菜,動態(tài)作用域让禀,

這些作用域在上面的代碼就有體現(xiàn),我們可以先從我們最容易看懂的name變量入手陨界,變量name是在整個代碼中的最外層的,即在函數(shù)外,代碼塊{}(es6新增)的,這就是全局作用域.
我們說作用域是變量在整個js代碼中運(yùn)行的規(guī)則巡揍,這時候name在全局作用域的規(guī)則下就是:網(wǎng)頁中所有腳本和函數(shù)均可使用

全局作用域聲明的變量可以在函數(shù)內(nèi)部修改

我們再把這段代碼修改一下菌瘪,就可以通過對比加深對全局作用域的理解腮敌,同時知道什么是函數(shù)作用域了
全局作用域的變量和函數(shù)作用域的變量

函數(shù)內(nèi)部定義的變量age,在函數(shù)內(nèi)部定義的俏扩,就是局部作用域糜工,很明顯,它的規(guī)則就是只能在函數(shù)內(nèi)部訪問动猬,你看在其它函數(shù)內(nèi)修改也改變不了內(nèi)部27的事實(shí)啤斗。在修改age的這個函數(shù)內(nèi)表箭,涉及到了js的變量提升編譯詞法等(看這里)赁咙,你在函數(shù)外打印age這個變量是可以得到20的,這更加說明了作用域的存在免钻,超出了作用域彼水,即便名字相同,也是不同的變量极舔。這也是由于不同作用域可訪問的變量不同導(dǎo)致的凤覆,可以再看一眼作用域的解釋:
作用域?yàn)榭稍L問對象,變量拆魏,函數(shù)的集合

在函數(shù)內(nèi)部盯桦,存在的可訪問變量有name,age渤刃,在函數(shù)內(nèi)部查找不到name這個變量時拥峦,會找到上一層全局作用域中,而查找age時卖子,在局部作用域中就找到了略号,所以不會再在全局作用域中進(jìn)行查找。
作為局部作用域定義的變量可以很好的受到保護(hù),不在外部就被隨意更改玄柠,但是比如年齡這個東西突梦,總不能每年詢問的時候總是那個歲數(shù)吧
局部作用域的變量每次訪問都被重置

所以我們需要每次訪問的時候讓函數(shù)內(nèi)部自己+1。類似這樣

plus函數(shù)就包含了它上一層的作用域中的變量age羽利,但由于plus函數(shù)也是局部作用域中宫患,所以每次訪問也是同樣的值,如果能夠?qū)lus這個操作这弧,做成類似全局作用域撮奏,那么每次執(zhí)行就不會是重復(fù)的值了
閉包實(shí)際就是將局部作用域的集合調(diào)到全局作用域中,使局部作用域中的變量不被銷毀

閉包是解決這個問題的一個方法当宴,用立即執(zhí)行函數(shù)返回的一個函數(shù)畜吊,成為了全局作用域下的一個變量集合,集合也可以是函數(shù)噢户矢,所以玲献,這個函數(shù)內(nèi)部使用的變量,雖然是在局部作用域下的梯浪,但是卻不會被銷毀捌年。

這兩個作用域基本上就是es5中經(jīng)常使用的了,在es6中挂洛,新增了塊狀作用域礼预, 起初我以為這個作用域的規(guī)則是針對所有變量的,但經(jīng)過試驗(yàn)虏劲,這個規(guī)則主要配合let聲明的變量使用托酸,用來解決以前es5中一些場景下變量使用的作用域模糊不清的問題,比如常見的這種

for(var i = 0;i < 3;i++){}
console.log(i)  //3

如果換成let來聲明i變量柒巫,就會報錯ReferenceError励堡,另外還有一種變量聲明const,同樣受此規(guī)則限制堡掏,所以应结,用let,const聲明的變量僅在當(dāng)前{}中可以訪問泉唁。

大概就說這些作用域了鹅龄,總結(jié):作用域是變量在一段代碼中的訪問規(guī)則,是可訪問變量的集合亭畜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扮休,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贱案,更是在濱河造成了極大的恐慌肛炮,老刑警劉巖止吐,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侨糟,居然都是意外死亡碍扔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門秕重,熙熙樓的掌柜王于貴愁眉苦臉地迎上來不同,“玉大人,你說我怎么就攤上這事溶耘《眨” “怎么了凳兵?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長庐扫。 經(jīng)常有香客問我,道長形庭,這世上最難降的妖魔是什么铅辞? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮萨醒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘富纸。我一直安慰自己,他們只是感情好胜嗓,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布高职。 她就那樣靜靜地躺著钩乍,像睡著了一般辞州。 火紅的嫁衣襯著肌膚如雪寥粹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天涝涤,我揣著相機(jī)與錄音,去河邊找鬼阔拳。 笑死,一個胖子當(dāng)著我的面吹牛辨宠,可吹牛的內(nèi)容都是我干的遗锣。 我是一名探鬼主播嗤形,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赋兵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叶组,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤历造,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后帕膜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡达吞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年荒典,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寺董。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖遮咖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情麦箍,我是刑警寧澤陶珠,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站揍诽,受9級特大地震影響诀蓉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渠啤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望处坪。 院中可真熱鬧,春花似錦同窘、人聲如沸部脚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锡移,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淆珊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工往声, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戳吝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓听哭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親且警。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容