三. var let const的理解 以及 立即执行函数中的使用 以及 for循环中的例子

一. 立即执行函数

windows中有个name属性,name='' ''

var

如果我们用var name 去声明,那就会改变windows中name的值(因为我们不是在函数作用域中声明的,所以会覆盖全局的值)

为了避免这种问题,通常我们写一个立即执行函数(可读性不高)

const

同样,如果我们用const去声明,也会改变全局的name属性

我们把const声明写在大括号里面,就不会改变全局的name属性了

 二. for循环

常见的for循环,console.log(i) 会输出10,why? 这是因为 i 是通过 var 来声明的,是一个全局变量,每次循环都会重写这个变量 i 

通常我们会在for循环中 进行ajax 请求,这边用setTimeout来模拟,1s后执行,会发现打印了10 打印了10次,why? 因为setTimeout执行的时候,for循环已经结束了

为了有效的解决上述问题,我们把var 改成 let ,这样就有效的解决了我们的问题了,因为 let 是块级作用域

 要注意的是:不能使用const去声明,因为const是常量

原文地址:https://www.cnblogs.com/wangRong-smile/p/11643424.html