麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > WEB開發 > 正文

深入理解javascript原型和閉包(12)——簡介【作用域】

2024-04-27 15:17:21
字體:
來源:轉載
供稿:網友

原文地址:http://www.cnblogs.com/wangfupeng1988/p/3991151.html

提到作用域,有一句話大家(有js開發經驗者)可能比較熟悉:“javascript沒有塊級作用域”。所謂“塊”,就是大括號“{}”中間的語句。例如if語句:

再比如for語句:

所以,我們在編寫代碼的時候,不要在“塊”里面聲明變量,要在代碼的一開始就聲明好了。以避免發生歧義。如:

 

其實,你光知道“Javascript沒有塊級作用域”是完全不夠的,你需要知道的是——javascript除了全局作用域之外,只有函數可以創建的作用域。

所以,我們在聲明變量時,全局代碼要在代碼前端聲明,函數中要在函數體一開始就聲明好。除了這兩個地方,其他地方都不要出現變量聲明。而且建議用“單var”形式。

jQuery就是一個很好的示例:

 

 

下面繼續說作用域。作用域是一個很抽象的概念,類似于一個“地盤”

如上圖,全局代碼和fn、bar兩個函數都會形成一個作用域。而且,作用域有上下級的關系,上下級關系的確定就看函數是在哪個作用域下創建的。例如,fn作用域下創建了bar函數,那么“fn作用域”就是“bar作用域”的上級。

 

作用域最大的用處就是隔離變量,不同作用域下同名變量不會有沖突。例如以上代碼中,三個作用域下都聲明了“a”這個變量,但是他們不會有沖突。各自的作用域下,用各自的“a”。

說到這里,咱們又可以拿出jquery源碼來講講了。

jQuery源碼的最外層是一個自動執行的匿名函數:

為什么要這樣做呢?

原因就是在jQuery源碼中,聲明了大量的變量,這些變量將通過一個函數被限制在一個獨立的作用域中,而不會與全局作用域或者其他函數作用域的同名變量產生沖突。

全世界的開發者都在用jQuery,如果不這樣做,很可能導致jQuery源碼中的變量與外部javascript代碼中的變量重名,從而產生沖突。

 

作用域這塊只是很不好解釋,咱們就小步快跑,一步一步慢慢展示給大家。

下一節將把作用域和執行上下文環境結合起來說一說。

可見,要理解閉包,不是一兩句話能說清楚的。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产精品久久 | 亚洲欧美不卡视频 | 欧美性受xxx黑人xyx性爽 | 欧美色另类 | 欧美成人免费在线视频 | 欧美成人一二三区 | 免费久久久久久 | 免费黄色在线 | 男男羞羞视频网站国产 | 黄色免费影片 | 日韩黄色精品 | 欧美日韩免费一区 | 精品一区二区三区在线播放 | 久久人人做 | 成人午夜在线免费观看 | 国产一国产一级毛片视频 | 天天色宗合 | 亚洲精品久久久久久久久久 | 欧美一级做性受免费大片免费 | 亚洲小视频在线观看,com | 成人aaaa免费全部观看 | 日日天日日夜日日摸 | 在线a亚洲视频播放在线观看 | 毛片a区| 精品亚洲一区二区三区 | 男女羞羞在线观看 | 免费一级a毛片在线播放视 日日草夜夜操 | 久久精品亚洲精品国产欧美kt∨ | 久久999久久 | 日韩av有码在线 | 午夜视频你懂的 | h视频免费看 | 国产成人精品无人区一区 | 精品一区二区三区电影 | av免费片 | 一区二区三区小视频 | 国产99视频精品免视看9 | 香蕉久久久精品 | 成人免费网视频 | 玖草| 欧美成人一区二区三区 |