javascript作用域、作用域鏈(菜鳥必看)
javascript的作用域和作用域鏈?zhǔn)俏覍W(xué)習(xí)最痛苦的一部分,因?yàn)槲一撕枚鄷r間看了好多技術(shù)文檔都沒有理解.大體知道什么意思了,然后還說不出之所以然來.
通過我大量的測試和看技術(shù)文檔總結(jié)了以下理解,雖然不是很有技術(shù)范但是確實(shí)能理解了。
1、javascript只有全局和局部之分,那些后臺語言的各種修飾符都沒有。在函數(shù)中不使用var則為全局。如下:
<script type="text/javascript">
varname="c#";//全局
window.name="java";//全局
varlanguage=function()
{
alert(name);
name="javascript";//全局
var name="JS";//局部
alert(name);
}()
alert(name);
</script>
上面代碼中表示為全局的在都指向同一個變量,下面的定義會替換上面的。關(guān)于三個alert分別是underfind,js,javascript.這就是作用域起了作用了。
2、作用域鏈從0級開始依次往下排,所謂的依次往下排指的是子級的排列。在尋找變量的時候先從同級找再找父級。
在上面的例子中,
首先彈出的是language方法里的第一個alert,如果window全局是0,那么在例子中var name="js"這個就是1.第一個alert就在1中找,如果找不到在去0中找。這是它發(fā)現(xiàn)了同級有一個var name="js"但是它目前還沒有賦值,所以彈出underfind
第二個彈出是language方法里的第二個alert,同樣的他會在1里找也就是方法內(nèi)部。他找到了name而且賦值了js,所以彈出的是js
第三個彈出是最下面的alert,由于在方法內(nèi)部已經(jīng)給全局name重新賦值了,導(dǎo)致彈出的是javascript。
然后增加下一個鏈路我們在language中頂一個方法,如下:
<scripttype="text/javascript">
varname="javascript";//全局
window.name="javascript";//全局
varlanguage=function()
{
alert(name);
name="javascript";//全局
varname="JS";//局部
alert(name);
var lovelanguage=function(){
alert(name);
}();
}()
alert(name);
</script>
此時lovelanguage里的alert彈出的是js因?yàn)樗麜疑弦患壱簿褪莑anguage里的name,所以。。。
以上就是小編為大家?guī)淼膉avascript作用域、作用域鏈(菜鳥必看)的全部內(nèi)容了,希望大家多多支持腳步之家。
相關(guān)文章
Extjs表單輸入框異步校驗(yàn)的插件實(shí)現(xiàn)方法
這篇文章主要介紹了Extjs表單輸入框異步校驗(yàn)的插件實(shí)現(xiàn)方法,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
JavaScript中高級語法??表達(dá)式用法示例詳解
這篇文章主要為大家介紹了JavaScript中高級語法??表達(dá)式用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
js根據(jù)給定的日期計(jì)算當(dāng)月有多少天實(shí)現(xiàn)思路及代碼
根據(jù)給定的日期計(jì)算當(dāng)月有多少天,想必這樣的功能大家都想實(shí)現(xiàn)吧,所以本文的出現(xiàn)相當(dāng)有必要,接下來看下實(shí)現(xiàn)代碼,感興趣的朋友可以了解下,希望對你有所幫助2013-02-02
javascript 文章截取部分無損html顯示實(shí)現(xiàn)代碼
近在做一些內(nèi)容搜索的工作,搜索出來的內(nèi)容為html格式,列表部分需要顯示每項(xiàng)內(nèi)容的一部分。2010-05-05
JavaScript高級程序設(shè)計(jì) 閱讀筆記(十四) js繼承機(jī)制的實(shí)現(xiàn)
繼承是面向?qū)ο笳Z言的必備特征,即一個類能夠重用另一個類的方法和屬性。在JavaScript中繼承方式的實(shí)現(xiàn)方式主要有以下五種:對象冒充、call()、apply()、原型鏈、混合方式2012-08-08
javascript 像素拼圖實(shí)現(xiàn)代碼
非常不錯的像素拼圖效果2009-04-04
JavaScript圖像放大鏡效果實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JavaScript圖像放大鏡效果實(shí)現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

