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);