[answered]
我正在为 html5 游戏测试浏览器的 fps。
我有这个代码:
var requestAnimationFrame = ( function() {
return window.requestAnimationFrame || //Chromium
window.webkitRequestAnimationFrame || //Webkit
window.mozRequestAnimationFrame || //Mozilla Geko
window.oRequestAnimationFrame || //Opera Presto
window.msRequestAnimationFrame || //IE Trident?
function(callback) { //Fallback function
window.setTimeout(callback, 1000/60);
}
})();
var hits = 0;
var last = new Date().getTime();
var step = (function(){
now = new Date().getTime();
hits += 1;
if( now - last >= 1000 ){
last += 1000;
console.log( "fps: "+ hits );
hits = 0;
}
requestAnimationFrame( step );
})();
它在 Chrome 上给出以下错误:
Uncaught Error: TYPE_MISMATCH_ERR: DOM Exception 17
在第 27 行:requestAnimationFrame( step );
W3 说这个错误是:If the type of an object is incompatible with the expected type of the parameter associated to the object.
但我实际上并没有与 DOM 交互,除了window
但是,如果我删除分配给的匿名函数的调用括号,step
而只是声明该函数并在新行上放置:
step();
有用。
为什么是这样?
两者不应该一样吗?