Javascript 为什么这个计数器方法不能正常工作?
我有一个count方法,它在控制台中打印一组,而不是在num属性中添加1。例如,如果我在参数中超过1,我将得到100个,而不是1到100Javascript 为什么这个计数器方法不能正常工作?,javascript,Javascript,我有一个count方法,它在控制台中打印一组,而不是在num属性中添加1。例如,如果我在参数中超过1,我将得到100个,而不是1到100 let obj={ num:0, count: function(max){ for(let i=0; i<max; i++){ let num=this.num; num++ console.l
let obj={
num:0,
count: function(max){
for(let i=0; i<max; i++){
let num=this.num;
num++
console.log(num);
}
}
}
obj.count(100);
let obj={
数字:0,
计数:函数(最大值){
对于(设i=0;i它工作不正常,因为您正在更改局部变量num
的值,而不是实例变量this.num
,因此for
循环this.num
的每次迭代都等于0
。由于数字是一种值类型,因此不会通过引用传递。可以执行简单的修复有声的:
let obj={
num:0,
count: function(max){
for(let i=0; i<max; i++){
this.num++
console.log(this.num);
}
}
}
obj.count(100);
let obj={
数字:0,
计数:函数(最大值){
对于(让i=0;iyou不重新分配this.num
目标是什么?在num++
行后添加thisthis.num=num
javascript中没有像字符串/数字这样的对象类型是按值传递的,而不是按引用传递的。。因此您的让num=this.num
正在复制this.num
,任何更改只会产生效果。)此copy.declarelet num=this.num;
before for loop,您就完成了。添加到post,如果您不想更改num
字段,请在before for looplet num=this.num;
之前声明此项。这不起作用,因为您没有传递对num
的引用,您正在分配与this.num
相同的值MBER是基本类型,将变量分配给数字将设置值,但不会传递引用。