for循环生成render函数中onchange总是显示出最后一个name变量的值有人知道吗

为什么在前端页面显示时,render函数中onchange总是显示出最后一个name变量的值
有人知道吗


                                var linenamelist=response.data.linenamelist;
                for(var i=0;iname=linenamelist[i];
                    console.log(name)
                    var obj={
                               title: name,
                               key:name,
                               //width:'80',
                               align:'left',
                               render: (h, params) => {

                                 return h('checkbox', {
                                     style: {
                                       
                                     },
                                     on: {
                                         'on-change': () => {
                                            console.log(name+","+that.listdata[params.index][name])
                                             if(params.row[name]=="1"){
                                                  that.listdata[params.index][name]="0";
                                                 
                                             }else{
                                                 that.listdata[params.index][name]="1";
                                                 
                                             }
                                         }
                                     }
                                 }, '');
                               }
                            }
                    console.log(obj)
                    that.listcolumns.push(obj);
                }

将var替换为let就可以了,大概明白了
代码里面大概就是说他先不走那个方法,把方法放着,然后等循环完了才把变量放进去,因为var的那个是全局变量

就是基本的闭包啊