我在尝试运行时得到“undefined is not a function”。我错过了什么?
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);
最佳答案
你需要使用:
new Date().getTime();
代替
new Date.getTime();
这里是对正在做什么的一些解释。当你这样做时:
new Date.getTime();
它在 Date
构造函数上查找 getTime()
属性,它是 undefined
因为该属性存在于原型(prototype)或实际实例化中对象,而不是构造函数本身。然后它尝试执行 new undefined
这显然不起作用并给你你看到的错误。
当你这样做时:
new Date().getTime();
它本质上是这样做的:
(new Date()).getTime();
因为运算符优先级,这就是您想要的。它将创建一个新的 Date()
对象,然后对其调用 .getTime()
方法。
关于javascript - 在新日期调用 getTime 时,未定义不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481530/