我有两个类似的功能,但一个有效,而另一个不起作用
function notWorking(el) {
return getEventListeners(el);
}
notWorking(document);
// result --> Uncaught ReferenceError: getEventListeners is not defined
working = function(el) {
return getEventListeners(el);
}
working(document);
// result --> Object {keyup: Array[1], …}
为什么getEventListeners在第二个函数内而不在第一个函数内工作?
最佳答案
首先,对于所有这些问题注释,getEventListeners
不是自定义方法,它是浏览器提供的控制台api。
getEventListeners(object)
getEventListeners(object)返回在以下位置注册的事件侦听器
指定的对象。
我执行了您在问题中提供的代码。它在Firefox中运行正常,请检查随附的快照
我在Chrome浏览器中执行了相同的操作
但这是无法预期的。由于它是有效的,而且Firefox也在做正确的事,因此应该在chrome中也应如此。我检查了var functionName = function() {} vs function functionName() {}中的所有答案以及所有其他资源。它说明了函数声明和函数表达式的范围/可见性。但是这里的问题是getEventListeners函数的可见性而不是function-working或function-notWorking。
因此,我认为这一定是Chrome中的缺陷,或者方法getEventListerners
不应在脚本中使用,它仅用于Command Line API Reference中指定的调试目的。
注意:此API仅在控制台本身内可用。您
无法从页面上的脚本访问命令行API。
更多信息
getEventListeners.toString()
> "function getEventListeners(node) { [Command Line API] }"
this.getEventListeners
> undefined //function is not accessible via window object
// where as
this.setTimeout
> setTimeout() { [native code] }
关于javascript - JS函数作为变量[getEventListeners API],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33388336/