Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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_Undefined - Fatal编程技术网

Javascript 未定义()用作函数

Javascript 未定义()用作函数,javascript,undefined,Javascript,Undefined,我正在阅读一篇关于javascript调试会话的文章,作者需要一种进入removeChild of Element的方法来了解哪些代码正在运行时删除特定的元素 所以他使用了下面的代码 javascript:void(Element.prototype.removeChild=function(){undefined()}) 据我所知,“undefined是全局对象的一个属性,也就是说,它是全局范围内的一个变量。”(引用自MDN)typeof其中未定义 在下一行中,作者说他得到了堆栈跟踪(注意,

我正在阅读一篇关于javascript调试会话的文章,作者需要一种进入removeChild of Element的方法来了解哪些代码正在运行时删除特定的元素

所以他使用了下面的代码

javascript:void(Element.prototype.removeChild=function(){undefined()})
据我所知,“undefined是全局对象的一个属性,也就是说,它是全局范围内的一个变量。”(引用自MDN)typeof其中未定义

在下一行中,作者说他得到了堆栈跟踪(注意,他正在与opera和dragonfly合作)

我已经尝试过执行这段代码,如果用在它上面,它就会工作,但是如果我只尝试使用

undefined()
它确实给了我一个错误“TypeError:undefined不是一个函数”,我理解这一点


任何人都可以解释一下所提到的代码是如何作为有效的javascript工作的,以及它是如何解决获取堆栈跟踪的问题的。

当作者调用
undefined()
时,它会导致错误发生,他会在调试器中捕捉到错误,以便找出是谁在该元素上调用
removeChild


另一种方法是使用
调试器语句,如果调试器打开,它将强制一个断点。

这特别有效,因为
undefined
不是一个函数,这意味着调用
removeChild
函数时,它会抛出相同的错误。这就产生了非常有用的堆栈跟踪。

我不确定我是否理解这个问题,但据我所知,他所做的是做了一个无效的调用,以便调试器在尝试执行它时打开,从而允许他查看调用
removeChild
的位置。所以他的
undefined()
和你的一样无效,这就是它的要点。

它故意抛出一个异常

查找调用removeChild()的代码的快速方法是 只需使removeChild()引发异常

您还可以执行以下操作:

javascript:void(Element.prototype.removeChild=function(){debugger;}) 

启动调试器。

是的,这样做更有意义,也更容易理解。。。。