Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对于很多递归,这段代码做什么?_Javascript_Zend Debugger - Fatal编程技术网

Javascript 对于很多递归,这段代码做什么?

Javascript 对于很多递归,这段代码做什么?,javascript,zend-debugger,Javascript,Zend Debugger,我已经实现了这个脚本的一部分来帮助我进行调试 var ZFDebugLoad = window.onload; window.onload = function(){ if (ZFDebugLoad) { ZFDebugLoad(); } ZFDebugCollapsed(); }; Firebug给我的错误是“错误时中断太多递归” 代码对我来说就像一个无止境的循环,所以我想知道为什么最初的作者会把它放进去。而且函数中没有返回,因此ZFDebugLoad永远不会有

我已经实现了这个脚本的一部分来帮助我进行调试

var ZFDebugLoad = window.onload;
window.onload = function(){
   if (ZFDebugLoad) {
      ZFDebugLoad();
   }
   ZFDebugCollapsed();
};
Firebug给我的错误是“错误时中断太多递归”

代码对我来说就像一个无止境的循环,所以我想知道为什么最初的作者会把它放进去。而且函数中没有返回,因此ZFDebugLoad永远不会有值

编辑此错误的实际原因(对于遵循相同教程的任何其他人,错误的原因是这一行)

$response->setBody(preg_replace('/(<head.*>)/i', '$1' . $this->_headerOutput(), $response->getBody()));
$response->setBody(preg_replace('/()/i','$1'.$this->\u headerOutput(),$response->getBody());

它使用regex模式
/()/i
,这导致脚本被附加到我的HTML5
标记中,我没有纠正这一点,我在模式中插入了一个空格
//i

ZFDebugLoad
保存
window.onload的旧值,然后用另一个函数替换它

在窗口
load
上,它首先运行原始函数(如果有),然后运行
zf


您不需要返回值。在JavaScript中,函数就是值。
if(ZFDebugLoad)
检查
ZFDebugLoad
是否是
未定义的
,也就是说,在运行脚本之前,是否已经有了
窗口。onload
函数。如果它不是
udefined
,则可以执行。

如果上面的脚本加载了两次,那么它将无限期地递归

第一次加载脚本时,它将按预期运行。 但是,第二次加载脚本时,window.onload的原始值将丢失,window.onload和ZFDebugLoad值将是同一个函数

由于window.onload现在正在检查ZFDebugLoad(已定义),它将运行该函数,但现在是同一个函数,因此它将再次检查ZFDebug(已定义),它将运行该函数,但


无限大。

那么为什么Firebug对很多递归说,这不是它试图执行无数次的信号吗?@Moak-我已经检查过了,它似乎工作正常:,所以问题很可能在其他地方。可能原始函数有一个无限递归,
zfdebug
有一个,或者t场景比显示的更复杂(例如,整个代码包含在一个绑定到
onload
)的函数中),我看到了,然后我需要弄清楚,它可能是由其他jQuery插件触发的,因为当我禁用除该脚本之外的所有脚本时,它可以正常工作而不会导致错误。