DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> javascript作用域、作用域鏈(菜鳥必看)
javascript作用域、作用域鏈(菜鳥必看)
編輯:關於JavaScript     

javascript的作用域和作用域鏈是我學習最痛苦的一部分,因為我花了好多時間看了好多技術文檔都沒有理解.大體知道什麼意思了,然後還說不出之所以然來.

通過我大量的測試和看技術文檔總結了以下理解,雖然不是很有技術范但是確實能理解了。

1、javascript只有全局和局部之分,那些後台語言的各種修飾符都沒有。在函數中不使用var則為全局。如下:

<script type="text/javascript"> 

varname="c#";//全局

window.name="java";//全局 

varlanguage=function() 

{ 

alert(name); 

name="javascript";//全局 

var name="JS";//局部 

alert(name); 

}() 

  

alert(name); 

</script> 

上面代碼中表示為全局的在都指向同一個變量,下面的定義會替換上面的。關於三個alert分別是underfind,js,javascript.這就是作用域起了作用了。

2、作用域鏈從0級開始依次往下排,所謂的依次往下排指的是子級的排列。在尋找變量的時候先從同級找再找父級。

在上面的例子中,

首先彈出的是language方法裡的第一個alert,如果window全局是0,那麼在例子中var name="js"這個就是1.第一個alert就在1中找,如果找不到在去0中找。這是它發現了同級有一個var name="js"但是它目前還沒有賦值,所以彈出underfind

第二個彈出是language方法裡的第二個alert,同樣的他會在1裡找也就是方法內部。他找到了name而且賦值了js,所以彈出的是js

第三個彈出是最下面的alert,由於在方法內部已經給全局name重新賦值了,導致彈出的是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因為他會找上一級也就是language裡的name,所以。。。

以上就是小編為大家帶來的javascript作用域、作用域鏈(菜鳥必看)的全部內容了,希望大家多多支持腳步之家。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved