2015-02-07 36 views
1

1-我在任何函數外聲明一個var
2-我點擊並提出將var更改爲BMW? (但我不顯示它)
3-我點擊另一個地方,我想展示我認爲它會顯示寶馬的變種,但它顯示瑪莎拉蒂。爲什麼?如果我在一個點擊函數內部改變一個var,但是我沒有使用這個var,那麼這個var真的會改變嗎?有人可以解釋一下,我只是想了解這種行爲。更改函數內部的var但不使用它

這裏查看和播放:http://jsfiddle.net/gLe5305k/

的jQuery:

var carName = "Maserati"; 

$("#blue").click(function() { 
    var carName = "BMW"; 
}); 

$("#smoke").click(function() { 
    $('#check').text(carName); 
}); 

HTML:

<div id="blue"></div> 
<div id="smoke"></div> 

<div id="check"></div> 

CSS:

#blue{ 
    position: absolute; 
    top:100px; left:100px; 
    width:100px; height:100px; 
    cursor:pointer; 
    background-color:blue; 
} 

#smoke{ 
    position: absolute; 
    top:100px; left:250px; 
    width:100px; height:100px; 
    cursor:pointer; 
    background-color:whiteSmoke; 
} 

回答

5

不要再次聲明變量:

$("#blue").click(function() { 
    carName = "BMW"; 
}); 

如果再次聲明該變量,它將被視爲一個局部變量,範圍僅限於該函數。

小提琴:link

+0

這將是一個偉大的答案,如果你解釋爲什麼OP使用'他的函數內部var'不更新的全局變量'carName '。 – Mouser 2015-02-07 10:15:14

+0

爲了使全局變量在函數內部,我不應該使用'var',這是規則嗎? – Nrc 2015-02-07 10:47:20

+0

通過不使用'var',你不在函數的作用域中聲明變量,它會在外部作用域中查找,直到找到你的變量。當你使用'var'在函數內聲明它時,外部變量是有效隱藏的,你必須以不同的方式訪問它。 – 2015-02-07 11:25:35

1

你有相同的名稱但不同的範圍的兩個變量。

變化var carName = "BMW";carName = "BMW";

現在你只需要一個變量

相關問題