Javascript 重新调用iLife

Javascript 重新调用iLife,javascript,iife,Javascript,Iife,为什么代码块抛出错误“UncaughtReferenceError:setSize未定义” 只需定义你的setSize函数并调用它一次(它的效果应该与你的IFFE相同) 你为什么要把它当作假象?为什么不使用普通的函数声明语句呢?好吧,函数表达式不会绑定到自身外部的符号。你在IFEE中放入某些东西的全部原因是像setSize()这样的东西不起作用。我知道我可以做到这一点,难道不可能创建和调用一个函数并使其可用于重新调用吗?@OzturkCanGokkaya-只有通过非直观的黑客才能做到。写清楚的代

为什么代码块抛出错误“UncaughtReferenceError:setSize未定义”


只需定义你的
setSize
函数并调用它一次(它的效果应该与你的IFFE相同)


你为什么要把它当作假象?为什么不使用普通的函数声明语句呢?好吧,函数表达式不会绑定到自身外部的符号。你在IFEE中放入某些东西的全部原因是像
setSize()
这样的东西不起作用。我知道我可以做到这一点,难道不可能创建和调用一个函数并使其可用于重新调用吗?@OzturkCanGokkaya-只有通过非直观的黑客才能做到。写清楚的代码。简洁不再是一种美德,当它变成一种代码高尔夫游戏时。正如@Mark Meyer所说,IFFE的全部目的是“包装”内容,使代码的其他部分无法使用。
const canvas = document.querySelector("#draw");

(function setSize() {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
})();

window.addEventListener("resize", () => {
    setSize();
})
const canvas = document.querySelector("#draw");

function setSize() {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
}

setSize();

window.addEventListener("resize", () => {
    setSize();
})