由于关闭是绑定到它的功能是词法环境我不知道为什么notAClosure
建设不是一个封闭:为什么这不是一个闭合
let a = { b: 42 };
let notAClosure = (param) => { param.b++ };
let aClosure =() => { a.b++ };
notAClosure(a);
当notAClosure
调用,我们传递给它的参考对象a
。这意味着现在在关闭内部,我们可以访问外部范围=词法环境。 我的功能是否正确?是aClosure
真正的关闭?是否notAClosure
真的不是封闭,如果是正确的 - 那为什么?
函数只在访问在外部作用域中定义的变量时才形成闭包。 'param'是一个局部变量,所以'notAClosure'不是一个闭包。所有的函数都可以访问全局变量,所以如果'a'是全局的,'aClosure'实际上不是一个闭包。 – 4castle
为什么这对你很重要?有没有一个真实世界的场景,你的代码有差异?这似乎纯粹是哲学的。 – Graham