我有一个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
?
答案 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);
}