2013-12-14 45 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); 
}