Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个计数器方法不能正常工作?_Javascript - Fatal编程技术网

Javascript 为什么这个计数器方法不能正常工作?

Javascript 为什么这个计数器方法不能正常工作?,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

我有一个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.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++
行后添加this
this.num=num
javascript中没有像字符串/数字这样的对象类型是按值传递的,而不是按引用传递的。。因此您的
让num=this.num
正在复制
this.num
,任何更改只会产生效果。)此copy.declare
let num=this.num;
before for loop,您就完成了。添加到post,如果您不想更改
num
字段,请在before for loop
let num=this.num;
之前声明此项。这不起作用,因为您没有传递对
num
的引用,您正在分配与
this.num
相同的值MBER是基本类型,将变量分配给数字将设置值,但不会传递引用。