当你在全局范围内声明一个函数 myFunction 时,它就是 window.myFunction 所以
window.myClickFunction = myClickFunction;
和做myfunction=myFunction
一样,没有任何效果。
要回答#3,我们需要查看更多代码。也许您没有在全局范围内声明 myClickFunction,而是在事件处理程序或其他内容中声明
例如
window.addEventListener("load",function() {
function myFunction() { console.log("hello"); }
})
function myFunction1() {
console.log("hello from myFunction1");
myFunction(); // not in window scope
}
myFunction1()
1.在第一种方法中,您使用 HTML 属性从 JavaScript 访问全局变量或函数,而在第二种方法中,您使用 JavaScript 访问标签并添加事件。这是关于谁发起呼叫的问题。
2.如果只是与 UI 相关,则可以仅使用 HTML 和 onclick。
3.只要没有 type="module" 属性,您的 myClickFunction() 就应该可以工作。如果是这样,您需要使用 window.myClickFunction = myClickFunction 将其附加到窗口对象,使其成为全局函数,这允许 HTML 访问该函数。然而,这种方法仍然有局限性,因为它只允许从 HTML 访问,而不是从所有 JavaScript 文件访问。