JavaScript:在多个函数中携带时间变量
JavaScript: Carrying Time Variable Across Multiple Functions
我试图获得一个函数在第二个函数内执行时的时间时间差。
然而,我不知道做这件事的最好方法是什么。我正在考虑一个全局变量,但是我不确定这将如何工作,考虑到第二个函数所需的变量是第一个函数执行的时间。
下面是我的代码:
var d = new Date();
function myFunction(A) {
// execute function A
var functionAExecuted = d.getMilliseconds();
}
function myFunction(B) {
// Execute function B
var functionBExecuted = d.getMilliseconds();
var diff = functionAExecuted - functionBExecuted;
if (diff > 3000) {
//do something
}
}
它不会执行,因为functionAExecuted
不会进位到第二个函数。最好的方法是什么?
这里有两件事要做:
- 对于初学者,您使用相同的
Date
对象来测量每个函数的启动时间。这样做的问题是,Date
对象表示固定状态,即它被实例化时的确切时刻。因此,无论何时调用 ,对 - 你的两个函数都试图访问彼此的局部变量,我相信你知道,这是不可能的,除非他们传递给对方作为参数。
- 在实际运行
myFunction(A)
之前,您正在重新定义myFunction
。这是由于JavaScript命名函数声明被提升(连同它们的定义)到封闭上下文的顶部,这意味着myFunction(A)
的功能总是在您有机会调用任何一个函数之前被myFunction(B)
的功能所取代。我建议您分别命名每个功能,然后,然后进行测试。- 关于函数提升的更多信息,请查看这个优秀的摘要:变量和函数提升
getMilliseconds()
的两次单独调用将返回相同的值。作为一种替代方法,可以考虑重命名函数,并使用外部作用域保存两个时间,并在事后计算其差值:
var times = {};
function myFunctionA(a) {
times.functionA = new Date();
// do something
}
function myFunctionB(b) {
times.functionB = new Date();
var diff = times.functionB.getMilliseconds() - times.functionA.getMilliseconds();
if (diff > 3000) {
//do something else
}
}
我将第一个值存储在一个表单中,然后在第二个函数中检索它:
var d = new Date();
function myFunction(A) {
var functionAExecuted = d.getMilliseconds();
// do something
document.forms.myForm.timeStorageFunctionA.value = functionAExecuted;
}
现在d.t getmilliseconds()是可访问的:
function myFunction(B) {
var functionBExecuted = new Date().getMilliseconds();
var functionAExecuted = document.forms.myForm.timeStorageFunctionA.value;
var diff = functionAExecuted - functionBExecuted;
if (diff > 3000) {
//do something else
}
}
相关文章:
- javascript时间戳插入字符串变量
- 如何组合Datepicker&一个变量中的时间选择器
- JavaScript变量生存时间
- 将日期和时间变量组合为mysqli日期时间字段
- Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
- 如何从html输入类型=“”中只获得Angular控制器变量中的时间值;时间”;
- JavaScript变量在第二次单击事件时间后取消设置
- 为返回的变量添加时间戳
- 单击“在时间存储变量”按钮,以便在触发 ajaxComplete 事件时使用
- 变量和数组将在浏览器内存中保留多长时间
- 从本地存储中获取最后一个变量(按时间)
- 如何在 javascript 中的变量名称中放置时间戳(例如 var a12439853 = 1)
- JavaScript比较两个时间变量
- 如何嵌入Ted演讲视频与时间变量
- 编码URI时丢失的时间变量
- gsap代码中的时间变量不更新
- 我如何获得UTC时间变量之间的时间段基于我的本地时间
- JavaScript:在多个函数中携带时间变量
- 角度Ajax时间变量
- 值“XX/YY/ZZZZ”对日期时间变量无效