js 隨手記

 
 
var name = 'frog'
function hello(){ alert(name); // undefined var name = 'bbc'; }
在javascript中,函數是能夠造成一個獨立做用域的,變量的查找,首先是就近原則,先看本身有沒有,本身沒有,就會自動跑到外層去找,這一點和其 它語言可能不同,它會自動跑外邊去找。
在整個hello做用域內,只要定義了name這個變量,就不會去window中找,不過呢,在hello本身的 做用域內,還有一個規則,申明以前調用,都是undefined,申明且賦值以後調用纔會有值。
alert(name)發生在申明以前,因此會彈出 undefined就是這麼個道理。

for(var i=0;i<10;i++){ //... } alert(i)//10

這個塊,指的就是兩個大括號之間的區域, 在javascript中,本來是不存在這個問題的,出現這個疑問,是由那些搞過c語言之類的人轉來搞javascript帶來的。他們之前的知識javascript

 
  

中,循環以後,i自動銷燬了,可是javascript中不是這樣的。只要記得javascript中,函數纔是劃分做用域的就能夠了。java

相關文章
相關標籤/搜索