var 与 let 区别

2019-10-15  本文已影响0人  dkvirus

es6 刚流行那会,我只知道 var 即将退出历史舞台,取而代之的是 let 和 const,却不知道 var 有什么缺陷,为什么会被取代。今天在 Youtube 上看到一段视频,解答了我的疑惑。

本文原标题为 《var 为什么会被 let 取代?》,很多哥们纠结标题取的不严谨或抠字眼,从而忽略了本文真正想要交流的内容。这让我很苦恼,起原先那个标题是因为我所在公司,我的一些技术好友,以及我在 github 上看到的一些源码,99% 看不到使用 var 了,对于 IOS 兼容、遗留老代码里仍使用 var 不在交流范围内。

先看用到 var 的一段代码。

function doSomething () {
    for (var i = 0; i < 5; i++) {
        console.log(i)
    }
    console.log('Finally ' + i)
}

doSomething()

打印结果:

0
1
2
3
4
Finally 5

i 在 for 语句里定义的,为什么在 for 语句外面仍然打印出来值了呢??

再看用到 let 的一段代码。

function doSomething () {
    for (let i = 0; i < 5; i++) {
        console.log(i)
    }
    console.log('Finally ' + i)
}

doSomething()

打印结果如下:

0
1
2
3
4
/Users/dkvirus/Documents/study/study-typescript/ex1/var.js:5
    console.log('Finally ' + i)
                             ^

ReferenceError: i is not defined

let 定义的变量 i 符合我们的常识,i 的作用域只在 for 语句里,在 for 外部用 i 变量报错未定义。

结论:

上一篇 下一篇

猜你喜欢

热点阅读