尝试运行时,我得到“未定义不是函数”。我错过了什么?
function bench(func) {
var start = new Date.getTime();
for(var i = 0; i < 10000; i++) {
func();
}
console.log(func, new Date.getTime() - start);
}
function forLoop() {
var counter = 0;
for(var i = 0; i < 10; i++) {
counter += 1;
}
return counter;
}
bench(forLoop);
答案 0 :(得分:6)
您需要使用:
new Date().getTime();
而不是
new Date.getTime();
以下是对正在进行的操作的一些解释。当你这样做时:
new Date.getTime();
它在getTime()
构造函数中查找Date
属性,即undefined
,因为该属性存在于原型或实际实例化对象上,而不存在于构造函数本身上。然后它会尝试new undefined
这显然不起作用,并为您提供您看到的错误。
当你这样做时:
new Date().getTime();
基本上是这样做的:
(new Date()).getTime();
因为运算符优先级而且这就是你想要的。它将创建一个新的Date()
对象,然后在其上调用.getTime()
方法。
答案 1 :(得分:1)
您需要在调用Date方法之前实例化Date对象。
示例:
var date = new Date()
start = date.getTime();