JavaScript如何更改函数内部的参数?

JavaScript如何更改函数内部的参数?,javascript,Javascript,这是我的代码: function makeCounter(x) { x = x || 0; var obj = { value: x, increment: function(){ x = x + 1; return x; }, decrement: function() { x = x - 1; return x;

这是我的代码:

function makeCounter(x) {
    x = x || 0;
    var obj = {
        value: x,
        increment: function(){
            x = x + 1;
            return x;
        },
        decrement: function() {
            x = x - 1;
            return x;
        }
    }
    return obj;
} 
var counter = makeCounter();

console.log(counter.increment()); // output is 1
console.log(counter.value); // output is 0

现在,我想知道如何编辑代码,使计数器.increment后的值为1。

您需要在增加或减少后更新值,并使用此.value而不是x变量

函数makeCountervalue=0{ 返回{ 价值 增量{ 返回++此.value; }, 减量{ 返回-this.value; } }; } 让计数器=makeCounter; console.logcounter.increment;//输出为1 console.logcounter.value;//输出为1使用此值更新值。将x的值分配给它

函数makeCounterx{ x=x | | 0; var obj={ 值:x, 增量:函数{ x=x+1; 这个值=x 返回x; }, 减量:函数{ x=x-1; 这个值=x 返回x; } } 返回obj; } var计数器=makeCounter; console.logcounter.increment;//输出为1
console.logcounter.value;//输出为1您需要在增加或减少后更新值,并使用this.value而不是x变量

您可以看到我的代码:

function makeCounter(x) {
    x = x || 0;
    return  {
        value: x,
        increment: function(){
            this.value = this.value + 1;
            return this.value;
        },
        decrement: function() {
            this.value = this.value - 1;
            return this.value;
        }
    }
}
var counter = makeCounter();

console.log(counter.increment()); // output is 1
console.log(counter.value); // output is 1
console.log(counter.increment())//output is 2
console.log(counter.value); // output is 2

在嵌套的情况下,您可能在某个时候无法使用它,您可以使用对象的名称。只要你在函数中调用它

函数makeCounterx{ x=x | | 0; var obj={ 值:x, 增量:函数{ obj.value=obj.value+1; 返回对象值; }, 减量:函数{ obj.value=obj.value-1; 返回对象值; } } 返回obj; } var计数器=makeCounter; console.logcounter.increment;//输出为1 console.logcounter.value;//输出为1您可以对返回的对象使用。当您执行counter.value时,您可以控制执行任何您喜欢的业务逻辑

您可以像这样更改代码

函数makeCounterx{ x=x | | 0; var obj={ 获取值{return x;},//仅需要更改 增量:函数{ x=x+1; 返回x; }, 减量:函数{ x=x-1; 返回x; } } 返回obj; } var计数器=makeCounter; console.logcounter.increment;//输出为1
console.logcounter.value;//输出是一个很好的解决方案,但这也需要解释。它与其他解决方案没有什么不同。他只是把它缩短了。他正在归还物品
function makeCounter(x) {
    return {
        value: x || 0,
        increment () {
           // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Increment_() 
            return ++this.value;
        },
        decrement () {
           // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Decrement_(--) 
            return --this.value;
        }
    };
} 

let counter = makeCounter();

console.log(counter.increment()); // output is 1
console.log(counter.value);