第二章.重點(diǎn)1

第二章:重點(diǎn)

詞法作用域意味著作用域是由書(shū)寫(xiě)代碼時(shí)函數(shù)聲明的位置來(lái)決定的。編譯的詞法分析階段 基本能夠知道全部標(biāo)識(shí)符在哪里以及是如何聲明的,從而能夠預(yù)測(cè)在執(zhí)行過(guò)程中如何對(duì)它 們進(jìn)行查找丸相。

function foo(obj) { with (obj) {
a = 2; }
}
var o1 = { a: 3
};
var o2 = { b: 3
};
     foo( o1 );
     console.log( o1.a ); // 2
foo( o2 );
console.log( o2.a ); // undefined

console.log( a ); // 2——不好,a 被泄漏到全局作用域上了!

這個(gè)例子中創(chuàng)建了 o1 和 o2 兩個(gè)對(duì)象俯在。其中一個(gè)具有 a 屬性,另外一個(gè)沒(méi)有竟秫。foo(..) 函 數(shù)接受一個(gè)obj參數(shù),該參數(shù)是一個(gè)對(duì)象引用,并對(duì)這個(gè)對(duì)象引用執(zhí)行了with(obj) {..}。

在 with 塊內(nèi)部,我們寫(xiě)的代碼看起來(lái)只是對(duì)變量 a 進(jìn)行簡(jiǎn)單的詞法引用,實(shí)際上就是一個(gè) LHS 引用(查看第 1 章),并將 2 賦值給它跷乐。
當(dāng)我們將 o1 傳遞進(jìn)去,a=2 賦值操作找到了 o1.a 并將 2 賦值給它,這在后面的 console. log(o1.a) 中可以體現(xiàn)肥败。而當(dāng) o2 傳遞進(jìn)去,o2 并沒(méi)有 a 屬性,因此不會(huì)創(chuàng)建這個(gè)屬性, o2.a 保持 undefined。

eval(..) 函數(shù)如果接受了含有一個(gè)或多個(gè)聲明的代碼,就會(huì)修改其所處的詞法作用域,而 with 聲明實(shí)際上是根據(jù)你傳遞給它的對(duì)象憑空創(chuàng)建了一個(gè)全新的詞法作用域愕提。

可以這樣理解,當(dāng)我們傳遞 o1 給 with 時(shí),with 所聲明的作用域是 o1,而這個(gè)作用域中含 有一個(gè)同 o1.a 屬性相符的標(biāo)識(shí)符馒稍。但當(dāng)我們將 o2 作為作用域時(shí),其中并沒(méi)有 a 標(biāo)識(shí)符, 因此進(jìn)行了正常的 LHS 標(biāo)識(shí)符查找(查看第 1 章)。
o2 的作用域浅侨、foo(..) 的作用域和全局作用域中都沒(méi)有找到標(biāo)識(shí)符 a,因此當(dāng) a=2 執(zhí)行 時(shí),自動(dòng)創(chuàng)建了一個(gè)全局變量(因?yàn)槭欠菄?yán)格模式)纽谒。

with 這種將對(duì)象及其屬性放進(jìn)一個(gè)作用域并同時(shí)分配標(biāo)識(shí)符的行為很讓人費(fèi)解。但為了說(shuō) 明我們所看到的現(xiàn)象,這是我能給出的最直白的解釋了如输。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鼓黔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子不见,更是在濱河造成了極大的恐慌澳化,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稳吮,死亡現(xiàn)場(chǎng)離奇詭異缎谷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)灶似,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)列林,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人酪惭,你說(shuō)我怎么就攤上這事希痴。” “怎么了撞蚕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵润梯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我甥厦,道長(zhǎng)纺铭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任刀疙,我火速辦了婚禮舶赔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谦秧。我一直安慰自己竟纳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布疚鲤。 她就那樣靜靜地躺著锥累,像睡著了一般。 火紅的嫁衣襯著肌膚如雪集歇。 梳的紋絲不亂的頭發(fā)上桶略,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音诲宇,去河邊找鬼际歼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛姑蓝,可吹牛的內(nèi)容都是我干的鹅心。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纺荧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼旭愧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宙暇,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤榕茧,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后客给,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體用押,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年靶剑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜻拨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桩引,死狀恐怖缎讼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坑匠,我是刑警寧澤血崭,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響夹纫,放射性物質(zhì)發(fā)生泄漏咽瓷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一舰讹、第九天 我趴在偏房一處隱蔽的房頂上張望茅姜。 院中可真熱鬧,春花似錦月匣、人聲如沸钻洒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)素标。三九已至,卻和暖如春萍悴,著一層夾襖步出監(jiān)牢的瞬間头遭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工退腥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留任岸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓狡刘,卻偏偏與公主長(zhǎng)得像享潜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗅蔬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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

  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持剑按,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠澜术,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 2,396評(píng)論 0 11
  • 特別說(shuō)明艺蝴,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 556評(píng)論 0 3
  • 一、理解js作用域 1盒延、作用域:作用域是一套規(guī)則缩擂,用于確定在何處以及如何查找變量(標(biāo)字符)。2添寺、LHS查詢:查找的...
    懷念不能閱讀 460評(píng)論 0 1
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持胯盯,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠计露,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 2,894評(píng)論 0 16
  • 謝雨竹博脑,字潤(rùn)生憎乙,號(hào)天文臺(tái)居士。 我總愛(ài)把潤(rùn)生喚做潤(rùn)之叉趣,可他總強(qiáng)調(diào)泞边,潤(rùn)之乃主席之名號(hào)莫要亂講。也罷君账,潤(rùn)生便是潤(rùn)生繁堡。...
    賈九一閱讀 172評(píng)論 0 0