2013-12-14 7 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 переменного, объявив ее внутри функции. Снимите var перед функцией ttl.

Это может удивить вас, потому что ваш первоначальный 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); 
} 
Смежные вопросы