《你不知道的JavaScript上卷》摘要

作用域和閉包

1.什么是作用域

一套設(shè)計(jì)良好的規(guī)則逮诲,用來(lái)存儲(chǔ)變量金抡,并且可以方便地找到這些變量橘霎,這套規(guī)則被稱為作用域

作用域嵌套:

當(dāng)一個(gè)塊或者函數(shù)嵌套在另一個(gè)塊或者函數(shù)中虑凛,就發(fā)生了作用域的嵌套碑宴;

在當(dāng)前作用域中無(wú)法找到某個(gè)變量時(shí),引擎會(huì)在外層嵌套的作用域中繼續(xù)查找桑谍,直到找到該變量延柠,或者抵達(dá)最外層作用域(即全局作用域)為止;

2.詞法作用域

詞法作用域就是定義在詞法階段的作用域锣披。換句話說(shuō)捕仔,詞法作用域是在寫代碼時(shí)將變量或者塊作用域?qū)懺谀睦餂Q定的,因此當(dāng)詞法分析器處理代碼時(shí)會(huì)保持作用域不變盈罐。

作用域查找會(huì)再找到第一個(gè)匹配的標(biāo)識(shí)符時(shí)停止榜跌;

eval(...)和with可以欺騙詞法作用域

3.函數(shù)作用域和塊作用域

屬于這個(gè)函數(shù)的全部變量都可以在整個(gè)函數(shù)的范圍內(nèi)使用及復(fù)用。

let關(guān)鍵字可以將變量綁定到所在的任意作用域中盅粪。即let為其聲明的變量隱式地劫持了所在的塊作用域钓葫。

const可以用來(lái)創(chuàng)建塊作用域變量,但其值是固定的(常量)票顾。

4.變量提升

變量和函數(shù)聲明好像被從它們?cè)诖a中出現(xiàn)的位置被移動(dòng)到了最上面础浮,這個(gè)過程就叫作提升帆调。

我們習(xí)慣將var a = 2;看做一個(gè)聲明就,而實(shí)際上JavaScript引擎會(huì)將 var a和a = 2當(dāng)做兩個(gè)單獨(dú)的聲明豆同,第一個(gè)是編譯階段的任務(wù)番刊,第二個(gè)是執(zhí)行階段的任務(wù)。

無(wú)論作用域中的聲明出現(xiàn)在什么地方影锈,都將在代碼本身被執(zhí)行前首先進(jìn)行處理芹务,可以想象成所有的聲明(變量和函數(shù))都會(huì)被“移動(dòng)”到各自作用域的最頂端,這個(gè)過程被稱為提升鸭廷。

聲明本身會(huì)被提升枣抱,而包括函數(shù)表達(dá)式的賦值在內(nèi)的賦值操作并不會(huì)提升。

5.作用域閉包

當(dāng)函數(shù)可以記住并訪問所在詞法作用域辆床,就產(chǎn)生了閉包佳晶,即使函數(shù)是在當(dāng)前詞法作用域之外執(zhí)行。

函數(shù)對(duì)象可以通過作用域鏈相互關(guān)聯(lián)起來(lái)讼载,函數(shù)體內(nèi)部的變量都可以保存在函數(shù)作用域內(nèi)轿秧,這種特性被稱為“閉包“ --《JavaScript權(quán)威指南》

從延時(shí)打印0-5看作用域和閉包

function foo(){
 var a = 2;
 function bar(){
 console.log(a);
 }
 return bar;
}
var baz = foo();
baz(); //2 這就是閉包的效果

this和對(duì)象原型

1.關(guān)于this

this實(shí)際上是在函數(shù)被調(diào)用時(shí)發(fā)生的綁定,它指向什么完全取決于函數(shù)在哪里被調(diào)用

2.this全面解析

this到底是誰(shuí)咨堤?

3.對(duì)象

4.混合對(duì)象類

5.原型

6.行為委托

持續(xù)更新中......

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淤刃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吱型,更是在濱河造成了極大的恐慌逸贾,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件津滞,死亡現(xiàn)場(chǎng)離奇詭異铝侵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)触徐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門咪鲜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人撞鹉,你說(shuō)我怎么就攤上這事疟丙。” “怎么了鸟雏?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵享郊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我孝鹊,道長(zhǎng)炊琉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮苔咪,結(jié)果婚禮上锰悼,老公的妹妹穿的比我還像新娘。我一直安慰自己团赏,他們只是感情好箕般,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舔清,像睡著了一般丝里。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸠踪,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音复斥,去河邊找鬼营密。 笑死,一個(gè)胖子當(dāng)著我的面吹牛目锭,可吹牛的內(nèi)容都是我干的评汰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼痢虹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼被去!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起奖唯,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惨缆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后丰捷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坯墨,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年病往,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捣染。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡停巷,死狀恐怖耍攘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情畔勤,我是刑警寧澤蕾各,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站庆揪,受9級(jí)特大地震影響示损,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嚷硫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一检访、第九天 我趴在偏房一處隱蔽的房頂上張望始鱼。 院中可真熱鬧,春花似錦脆贵、人聲如沸医清。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)会烙。三九已至,卻和暖如春筒捺,著一層夾襖步出監(jiān)牢的瞬間柏腻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工系吭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留五嫂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓肯尺,卻偏偏與公主長(zhǎng)得像沃缘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子则吟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360