簡體   English   中英

JavaScript的; 如何聲明變量全局?

[英]JavaScript; How do I declare a variable global?

http://jsfiddle.net/borayeris/6kvyb/

<ul>
  <li>foo</li>
  <li>bar</li>
</ul>

<script>
$('li').each(function(index) {
    var qq=$(this).text();
    alert(index + ': ' + qq);
  });


alert(qq);// Asking this one.
</script>

你已經在函數范圍內聲明了qq。 一旦該功能退出,qq就不再存在了。

如果你想獲得qq的警報,你需要在函數之外聲明它。 請記住,它只包含分配給它的最后一個值。

var qq;

$('li').each(function(index) {
    qq=$(this).text();
    alert(index + ': ' + qq);
  });

alert(qq); // Will alert 'bar'

布蘭登的答案在解釋原因時是正確的。 相反,如果你想知道在調用each()之后如何使它可以訪問,你可能想要這樣的東西:

var qq;

$('li').each(function(index) {
    qq = $(this).text();

    alert(index + ': ' + qq);
  });


alert(qq);

這使得qq成為全局范圍變量,您可以為每次循環中的值重新分配值。 在循環結束時,變量將保留分配給它的最后一個值(在您的示例中為bar)。

它應該像這樣重寫:

<script>
var qq;
$('li').each(function(index) {
qq=$(this).text();
alert(index + ': ' + qq);
});
alert(qq);

;

請注意,qq將僅包含最后一個值,因為每次循環遍歷li時都會重新分配它。

它沒有工作,因為你在一個匿名函數中聲明了qq變量,所以它不存在於它之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM