如何初始化全局变量
How to initialize a global variable
我有一个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);
}
相关文章:
- 使用名称初始化 ng-app 会禁用变量初始化
- 使用变量初始化数组:意外的令牌 +
- 使用变量初始化javascript数组
- 使用jQuery.when时进行了奇怪的变量初始化
- 使用angularjs范围变量初始化javascript变量
- 异步角度承诺和变量初始化
- JavaScript 变量初始化显示 NaN
- 使用静态变量初始化同一类中的变量
- JavaScript 中正确的“私有”变量初始化
- 角度 - 全局变量初始化一次 - 页眉中的示例用户名
- 角度变量初始化
- 对象变量初始化
- Snap SVG - 我可以使用多个变量初始化 snap.svg 指向标记中的不同 svg ID 吗?
- 使用 PHP 变量初始化选择标签
- JavaScript 在没有全局变量初始化值的情况下得到错误
- Javascript变量初始化
- AngularJS-$rootScope变量初始化失败
- Javascript 变量初始化语法
- 在变量初始化时运行代码
- 为什么这个变量初始化不对数字生效?