如何初始化全局变量

How to initialize a global variable

本文关键字:全局变量 初始化      更新时间:2023-09-26

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

这是因为通过在函数中声明ttl变量来隐藏。删除函数中ttl前面的var

这可能会让您感到惊讶,因为您的初始alert位于该函数中var ttl;行的上方。这是因为在JavaScript中,var声明实际上是"提升的"(移动到函数的顶部)。在我博客上的这篇文章中有更多内容,但基本上是这样的:

function foo() {
   var a;
   doSomething();
   var b = 42;
   doSomethingElse();
}

实际上是这样解释的:

function foo() {
   var a;
   var b;
   doSomething();
   b = 42;
   doSomethingElse();
}

不要这样做

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

如果它是初始化的,就不要再使用var

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

有关更多信息,请查看Variable Scope

的这篇文章

试试这个:

var global1 = "I'm a global!";
var global2 = "So am I!";
// other js-file
function testGlobal () {
    alert(global1);
}