Javascript,事件处理程序无法命名为click

时间:2018-08-16 18:18:39

标签: javascript html events event-handling

今天,我正在实现一个点击列表器,偶然发现以下内容:

function click (val) {
  console.log(val)
} 

function random (val) {
  console.log(val)
} 
div:hover {
background-color: blue;
cursor: pointer;
}
<div onclick="click(1)">test1</div>
<div onclick="random(1)">test2</div>

用于处理事件的方法不能命名为“ click”。点击不是forifwhile之类的保留关键字,为什么我不能使用它呢?还有其他我不能使用的函数名称吗?

1 个答案:

答案 0 :(得分:1)

onclick属性代码在它所属的DOM元素的上下文中进行评估。由于元素has click function,它在全局click处显示阴影。

一个example

<div onclick="
  console.log(
    typeof click === 'function', // true
    this.click === click, // true
    document.querySelector('div').click === click // true
  );
">test</div>

像这样的情况证实,现代实践中尽可能避免使用全局变量并使用addEventListener而不是onclick是合理的。