如何初始化全局变量

时间:2013-12-14 10:31:54

标签: javascript jquery variables global

我有一个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

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

不要这样做

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

如果是初始化,请不要再次使用var

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

有关详情,请查看 Variable Scope

的这篇文章

答案 2 :(得分:0)

试试这个:

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

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