在函数内部和外部定义变量的区别
Difference of defining a variable inside and outside a function
这里是javascript的新手。
TeamTreehouse博客有一个关于如何用javascript构建计时器的小教程。它基本上是以下代码:
<h1 id="timer">Loading</h1>
var updateMessage = function(){
var date = Date();
var message = document.getElementById("timer");
message.innerHTML = "The time is " + date;
}
var timer = setInterval(updateMessage, 500);
这一切都很好。但是,我想将date
用于多种功能。我尝试了以下方法。。
var date = Date();
var updateMessage = function(){
var message = document.getElementById("timer");
message.innerHTML = "The time is " + date;
}
但现在它不能实时工作了。每当我点击F5时,它都会返回正确的时间,但不再实时更新。
为什么会这样?我想,当我在函数之外声明一个变量时,它将成为一个全局函数,可以在任何地方使用。
因为Date()
是您调用它的时间,所以它不会不断更新!
如果您想共享它,请在函数内部更新它。
var date;
var updateMessage = function(){
date = new Date();
var message = document.getElementById("timer");
message.innerHTML = "The time is " + date;
}
var date = Date();
var updateMessage = function(){
var message = document.getElementById("timer");
message.innerHTML = "The time is " + date;
}
在上述情况下,CCD_ 3是一个变量,其值是在加载脚本时分配的。
在另一种情况下,当updateMessage被调用时,var date
一直被分配
var updateMessage = function(){
var date = Date();
var message = document.getElementById("timer");
message.innerHTML = "The time is " + date;
}
var date = Date();
仅在加载脚本时执行一次。可变日期在网页的整个生命周期内保持不变。这就是为什么它只有在刷新页面时才会更改。
这里的问题不是在哪里定义date
变量,而是在哪里以及调用Date()
函数的次数。
在全球范围内声明,但每次需要时都进行必要的调用也是一个有效的解决方案。
var date; // declaration
var updateMessage = function(){
var message = document.getElementById("timer");
date = Date(); // call to Date() everytime updateMessage is executed
message.innerHTML = "The time is " + date;
}
第二个例子中缺少setInterval吗?
除此之外,你走在了正确的轨道上,但有一个小问题:按照你现在的做法,当你加载页面时,你会得到Date((,然后一遍又一遍地使用相同的日期。
像这样的东西应该对你有效,因为它会给你一个全局变量,同时定期更改日期:
var date = Date();
var updateMessage = function(){
date = Date();
var message = document.getElementById("timer");
message.innerHTML = "The time is " + date;
}
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 在javascript中,在变量名之前使用var有什么区别/优势吗
- 有什么区别!!变量和变量
- 使用变量self与this之间的区别
- 标识符和变量之间的区别(在 JavaScript 中)
- var i = somevalue 有什么区别;和变量 i;i = 某个值;
- 是否将函数分配给变量的区别
- Javascript & JQuery:$x 和 x 作为变量声明有什么区别?
- 声明有和没有原型的变量有什么区别
- 使用 ng-model 定义变量之间的区别,而不是通过 AngularJS 中的控制器定义变量
- 使用Javascript,变量赋值上下文中的表达式与上下文外的表达式有什么区别
- Javascript私有变量和参数有什么区别
- javascript属性和javascript变量有什么区别
- JS-使用||分配条件变量的区别或优势
- AngularJs中用方括号和花括号声明变量有什么区别
- 使用[]初始化javascript变量和使用{}初始化变量有区别吗?
- 从函数返回内部变量和直接返回值之间有区别吗?
- 定义变量时带$和不带$有什么区别?
- 在{}和link中为angular指令定义独立作用域变量的区别
- “test”和“test”有什么区别?Javascript变量和"#test"变量可以将var ja