我有一个函数,返回一个variable
和function
来编辑变量值。
但这不起作用,我也不知道为什么。
正确的方法是什么?
这是我的代码:
function t(){
var test = 1;
var changeTest = function(){
test++;
}
return {
changeTest:changeTest,
test:test
}
}
var b = t();
b.changeTest();
console.log(b.test) // the value is 1 not 2
最佳答案
test
的值是原始值,因此它实际上不是引用。
解决方案:将公开的test
属性设置为吸气剂,以便在访问该属性时检索私有test
变量的值:
return {
changeTest:changeTest,
get test() { return test }
}
function t(){
var test = 1;
var changeTest = function(){
test++;
}
return {
changeTest,
get test() { return test }
}
}
var b = t();
b.changeTest();
console.log(b.test);
在这种模式下,
test
变量保持私有状态,并且只公开您想要的功能。因此,在这种情况下,您允许显式读取test
值,但不能写入它。注意:您可以将对象文字表示法缩短为:
return {
changeTest,
get test() { return test }
}
关于javascript - JavaScript通过引用返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59124980/