有人可以请解释下面的代码吗?为什么内部函数不能访问同一父函数中的“内部”变量 - 但它们似乎与对等函数共享相同的变量?我知道我可以在子函数中使用“this”来访问父函数中的“inside”变量,但是我为什么需要这个函数而感到困惑......我是否有效地创建了类实例可能想要更静态的东西?我一直在使用这种模式来包装javascript功能,但现在我想知道是否有更好/更简单的模式来避免变量封装(更静态的东西)的这种挑战?感谢您的见解。范围内的JavaScript变量函数内功能
var wrap = function() {
var inside = null;
function showInside() {
console.log(inside);
}
function changeInside() {
console.log(inside);
inside += 'test';
}
return {
inside: inside,
showInside: showInside,
changeInside: changeInside
};
}();
wrap.changeInside();
wrap.showInside();
wrap.changeInside();
wrap.showInside();
console.log(wrap.inside);
究竟是什么问题? –
你的问题与功能无关。这里是你看到的简化版本:'var foo = 42; var obj = {foo:foo}; foo = 21;的console.log(obj.foo);'。 JavaScript是**按值传递**。 '{foo:foo}'将'foo'的值的* copy *赋给属性'foo'。 –
我认为**在JavaScript中传递值**令人困惑,因为您也可以将引用作为值传递。如果'foo'是一个对象,则不会将该对象的副本分配给该对象的引用副本。 –