Javascript 为什么自定义函数会创建错误,而console.log不会';点击事件?

Javascript 为什么自定义函数会创建错误,而console.log不会';点击事件?,javascript,Javascript,我有两个相同的元素,具有不同的侦听器onClick事件 函数onclick(){ console.log(“onclick”); } 。一些样式{ 利润率:10px; 边框:1px纯黑; } 单击要在控制台中查看的文本 单击要在控制台中查看的文本 当您使用onxxx属性创建事件处理程序函数时,您会得到一个具有复杂作用域的函数。在处理函数的代码(即属性文本中的代码)的作用域中,涉及的元素是:;在这种情况下,。的所有属性都将作为事件处理程序代码的本地符号提供,尤其包括onclick属性 因此,您

我有两个相同的
元素,具有不同的侦听器onClick事件

函数onclick(){
console.log(“onclick”);
}
。一些样式{
利润率:10px;
边框:1px纯黑;
}

单击要在控制台中查看的文本
单击要在控制台中查看的文本

当您使用
onxxx
属性创建事件处理程序函数时,您会得到一个具有复杂作用域的函数。在处理函数的代码(即属性文本中的代码)的作用域中,涉及的元素是:;在这种情况下,
的所有属性都将作为事件处理程序代码的本地符号提供,尤其包括
onclick
属性

因此,您的代码并没有调用您声明为(大概)全局符号
onclick
的函数,而是调用注册了
onclick
函数,这当然是您的处理程序代码。因此,它是一个溢出堆栈的无限递归调用


如果将处理程序函数的名称更改为
romanRoman()
,或其他在单击的元素或任何封闭的
上不作为属性存在的名称,则效果会更好。

尝试在内联事件处理程序的上下文中重命名函数,“onclick”指的是周围自动生成的函数,而不是自定义onclick函数。解决方法:不要叫它onclick。谢谢你的回答。你还可以提供一些链接到它被记录的地方吗?(如果存在的话)太好了!但是“onxxx”属性是什么?请用代码显示。@step up like
onclick
onchange
onblur
等HTML元素的属性,可以用来设置事件处理程序。