尝试运行时,我得到"未定义不是函数".我错过了什么?
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);
Run Code Online (Sandbox Code Playgroud)
你需要使用:
new Date().getTime();
Run Code Online (Sandbox Code Playgroud)
代替
new Date.getTime();
Run Code Online (Sandbox Code Playgroud)
以下是对正在进行的操作的一些解释.当你这样做时:
new Date.getTime();
Run Code Online (Sandbox Code Playgroud)
它getTime()在Date构造函数中查找属性,这是undefined因为该属性存在于原型或实际实例化对象上,而不是构造函数本身上.然后它尝试做new undefined哪些显然不起作用,并给你你看到的错误.
当你这样做时:
new Date().getTime();
Run Code Online (Sandbox Code Playgroud)
它基本上是这样做的:
(new Date()).getTime();
Run Code Online (Sandbox Code Playgroud)
因为运营商的优先权,这就是你想要的.它将创建一个新Date()对象,然后.getTime()在其上调用该方法.
| 归档时间: |
|
| 查看次数: |
7213 次 |
| 最近记录: |