阿里前端笔试题请教

getter里的key 执行时拿到的是最后一个。这是把那个click 弹i的题目给改了方式又问了…
■网友
因为 key 是函数作用域局部变量,而非块级作用域局部变量。
■网友
2333
【阿里前端笔试题请教】 遇到这类循环里带有 function 的,九成考的就是作用域的问题,脑子里第一个反应就是直接使用 let

■网友
你搜一下 js for循环闭包
■网友
这道题是我的填空题,主要就是考作用域和闭包。因为for是没有块级作用域的,key作为函数变量存了下来,所以key在循环了几次之后值变成了最后一个,你在循环后访问key都是这个值。这大概是从其他语言转到js遇到的第一个坑……
■网友
因为JavaScript是函数作用域,不是块作用域,在整个函数A内部,key的值是共享的。如果想让a.x = X,就要让key不在同一个函数作用,可以加一个立即执行函数,形成一个独立的函数作用域。代码如下:阿里前端笔试题请教


■网友
应使用:for(let key ... (ES6)或者闭包传入参数,建造新的函数作用域。见函数级作用域与块级作用域的区别。


    推荐阅读