var和let块级作用域

什么是变量作用域?

变量在什么范围内是可用的。

没有块级作用域引发的问题?

那么函数的值就可能在被使用前修改。

if(true){
    var name = "why"
  }
  name = "lsii"
  console.log(name)  // lisi

if语句为真,所以代码是可以执行的。而我们定义的变量name在打印的是lisi,原因是没有块级作用域。

比如:
有五个按钮,我们的需求就是,就是点击按钮,打印出当前是哪一个按钮被点击了。








此时,就会产生一个问题,我们点击第一个按钮,却始终打印的是第五个。因为此时变量i已经被修改了。
在这里插入图片描述
解决方案:
(1)、闭包

for (var i=0;i

在这里插入图片描述
为什么闭包可以解决问题?
因为函数是一个作用域。
(2)、let
let有自己的块级作用域。

for (let i=0;i

在这里插入图片描述

你可能感兴趣的:(js学习)