模块中的返回值返回Null
Return Value in Module Returns Null?
我正试图创建一个模块,在那里我可以实现定时器(解析云代码)。问题是它在最后的执行时间返回了一个空值。我认为这与无法检索初始起始变量有关。
我怎样才能做到这一点。谢谢
var start;
var end;
exports.beginTimer = function beginTimer(functionName) {
//Start timing now
var start = new Date().getTime();
}
exports.endTimer = function endTimer(functionName) {
//End timer
var end = new Date().getTime();
var time = end - start;
alert('Execution time for' + functionName + ': ' + time);
}
您已经在每个函数中重新声明了start
和end
。
这将用同名的局部变量屏蔽全局变量。
CCD_ 3得到CCD_ 4作为CCD_。
除非您想创建一个本地作用域的变量,否则不要使用var
。
通过在方法中使用关键字"var",可以在方法本身的命名空间中创建此变量。
这就是为什么在"beginTimer"方法中,您的变量已经在方法块的末尾被删除了。因此,使代码工作的最简单方法是从方法中的变量声明中删除"var"。
如果在完成多个方法之前调用它们,这可能会发生新的错误,因为它们都将使用相同的"开始"answers"结束"。您可能需要考虑在"functionName"answers"start"之间使用某种映射。
你可以这样做,例如:
var start = {};
exports.beginTimer = function beginTimer(functionName) {
//Start timing now
start[functionName] = new Date().getTime();
}
exports.endTimer = function endTimer(functionName) {
//End timer
var end = new Date().getTime();
var time = end - start[functionName];
alert('Execution time for' + functionName + ': ' + time);
}
由于当一个方法在完成之前被调用两次时,可能会出现新的问题,因此您可能需要使用传递给该方法的唯一标识符。
var start = {};
exports.beginTimer = function beginTimer(functionName, uid) {
//Start timing now
start[uid] = new Date().getTime();
}
exports.endTimer = function endTimer(functionName, uid) {
//End timer
var end = new Date().getTime();
var time = end - start[uid];
alert('Execution time for' + functionName + ': ' + time);
}
您必须在方法中生成此UID。
相关文章:
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- php函数的ajax html$_POST值返回null
- 是否可以 document.getElementsByTagName('head')[0] ever 返回 null
- Firebase:查询返回null
- 在浅层渲染的反应组件上,Enzyme为道具返回null
- jQuery Multiselect插件返回null长度(应为0?)
- 如何处理getElementById返回Null
- JavaScript中的RegExp返回null
- Javascript 中的 RegEx 返回 Null
- 加载时的getelementbyID返回null
- 谷歌脚本在第二次调用Gmail后返回null
- Indexeddb OpenCursor在特定键值上返回null
- Ajax响应返回null
- 有没有一种方法可以判断图像src是否在javascript内部返回null
- 当JS在Chrome控制台上正常工作时,Selenium JavaScript执行器返回null
- Auth$getUser返回null,即使用户已登录(AngularFire,Firebase)
- Mongoose JS findOne总是返回null
- 为什么我的ajax调用返回null
- 当与全局标志一起使用时,Javascript Regex在后续调用中返回null
- Regex以确定该值在JS中是否有效,返回null