document.querySelector('html').onclick = function() {
alert('Hy');
}
每当我单击显示对话框的网页时,该工程就会运行。
但是如果我要删除函数声明并改为编写
document.querySelector('html').onclick = alert('Hey');
它只能运行一次。
我不明白这一点,因为每次我单击网页时,我都要求javascript通过Hey发出警报,但它只能这样做一次。 函数声明对这段代码有什么影响?
答案 0 :(得分:0)
您需要区分函数和调用函数的结果。在第二种情况下,您要立即运行alert
函数,然后将onclick
设置为其结果(这不是一个函数,并且没有任何用处)。
答案 1 :(得分:0)
因为这样做是什么?
document.querySelector("html").onclick = alert("Hey");
它运行代码alert("Hey")
,然后将元素的onclick
设置为alert("hey")
的返回值。如果alert("Hey")
返回一个函数,这只能作为适当的事件处理程序。它不是:
console.log(alert("Hey"));
因此您需要附加一个函数或函数引用,如下所示:
document.body.onclick = () => alert("Hey");
<p>Click Me</p>
以上方法有效,并且只是所需语法的一小部分-为此,我们使用了ES6箭头功能。