我今天偶然发现了这一点,由于我不是浏览器专家或网络开发人员,因此我可能错过了一些相当明显的东西。观察下面的简单 HTML:
<html>
<head>
<script>
function ping() {
console.log('pong');
}
</script>
</head>
<body>
<a href="#" onClick="ping()">Call ping</a>
</body>
</html>
单击链接时,我期望在控制台中打印 pong。但是,我在 Chrome 和 Firefox 中得到的是“TypeError: ping is not a function”。如果我直接从控制台调用该函数,它就可以工作。如果我将 ping 函数重命名为其他任何名称,它就可以工作。如果我用“按钮”标签替换“a”标签,同时离开名为 ping 的函数,它就可以工作!
似乎不知何故,只有在这种特定的组合中:标记“a”的 onClick 与称为 ping() 的函数会导致上述错误。我是疯了还是我刚刚发现了世界上最微不足道的错误?如果它是一个错误,我觉得它发生在 Chrome 和 Firefox 中很奇怪,因为它们有不同的 JavaScript 引擎实现、不同的布局引擎实现等。