Javascript 使用onclick调用哪个normalize函数?

Javascript 使用onclick调用哪个normalize函数?,javascript,html,forms,Javascript,Html,Forms,上下文:我正在尝试学习一些JavaScript和HTML。我有一些数组,希望对它们进行规范化,使它们的条目总和为1。为此,我定义了一个名为normalize的函数(以数组为参数)。在我尝试将对normalize函数的调用作为main.html文件中按钮单击的一部分之前,一切都很顺利。下面是一个省略了数组内容的工作虚拟示例 <script> function normalize () {return 1;}; </script> <input typ

上下文:我正在尝试学习一些JavaScript和HTML。我有一些数组,希望对它们进行规范化,使它们的条目总和为1。为此,我定义了一个名为normalize的函数(以数组为参数)。在我尝试将对normalize函数的调用作为main.html文件中按钮单击的一部分之前,一切都很顺利。下面是一个省略了数组内容的工作虚拟示例

<script>
    function normalize () {return 1;};
</script>
    
<input type="button" onclick="console.log(normalize()); //prints undefined when clicked">

<script>
    console.log(normalize()); // prints 1 as intended
</script>

函数normalize(){return 1;};
console.log(normalize());//按预期打印1
但是如果我将函数名更改为非normalize,那么两个调用都可以正常工作:

<script>
    function foo () {return 1;};
</script>
    
<input type="button" onclick="console.log(foo()); //prints 1 when clicked">

<script>
    console.log(foo()); // prints 1
</script>

函数foo(){return 1;};
console.log(foo());//印刷品1
我的问题是:当函数名为normalize时,onclick调用的行为为何不同?考虑到onclick似乎在调用我的一个数组上的某个外部规范化函数,我本以为它会抛出一个错误之类的东西。我快速搜索了其他的normalize函数,我确实看到了一个HTMLDOM normalize方法,但我不明白为什么要调用它(如果调用它!),而不是我想要的函数。onclick normalize调用是怎么回事


提前感谢您提供的任何帮助

这是不使用
onxyz
属性样式的事件处理程序的众多原因之一:它们在多重嵌套的代码中执行,该代码的作用域中有大量的对象方法。在本例中,您正在意外运行,您可以看到存在:


console.log(Node.prototype中的“normalize”)我正在寻找重复的目标,但基本上这是不使用此类事件处理程序的众多原因之一。它们执行时会在范围内隐藏全局函数的一系列意外事件。使用
addEventListener
代替。All:这有一个完善的dupitarget,我只是找不到它…这能回答你的问题吗?在这种情况下,他们使用了
write
而不是
normalize
,但处理方式相同。@HereticMonkey,谢谢!(我放弃了。我知道DupiTarget在那里,但我就是找不到。)谢谢你的帮助!从现在起,我肯定会使用addEventListener。