2013-12-14 203 views
-1

我有一個jquery如下:如何初始化的全局變量

var ttl = 0; 


$(document).ready(function(){ 

$('.click').click(function() { 
alert(ttl); 
var ttl = $('#t1').val() + $('#t2').val(); 
alert(ttl); 

}); 
}); 

和HTML:

<a href="#" class="click">Click Me</a> 
<input type="text" id="t1" /> 
<input type="text" id="t2" /> 

現在點擊click鏈接警報undefined,但我期待着提醒0 。如何初始化ttl全局變量爲0

JsFiddle Link

回答

4

這是因爲你由函數中聲明其陰影ttl變量。在功能中刪除ttl前面的var

這可能會讓你大吃一驚,因爲你的初始alert以上該函數中的var ttl;行。這是因爲在JavaScript中,var聲明實際上是「懸掛」(移至函數的頂部)。 More in this article on my blog,但基本上是這樣:

function foo() { 
    var a; 

    doSomething(); 

    var b = 42; 

    doSomethingElse(); 
} 

實際上是這樣解釋:

function foo() { 
    var a; 
    var b; 

    doSomething(); 

    b = 42; 

    doSomethingElse(); 
} 
+0

感謝...ü再次救了我。謝謝一噸 – Nitish

+0

我做到了像以前一樣 – Nitish

0

不要做這樣的

var ttl = $('#t1').val() + $('#t2').val(); 

如果初始化一個不再次使用var

ttl = $('#t1').val() + $('#t2').val(); 

詳細檢查本文Variable Scope

0

試試這個:

var global1 = "I'm a global!"; 
var global2 = "So am I!"; 

// other js-file 
function testGlobal() { 
    alert(global1); 
}