var和let的区别

作者: 米若晨风 | 来源:发表于2019-03-23 13:36 被阅读9次

今天在写代码的时候引用了d3画词云的插件d3-cloud,插件中自带的例子可以满足我的需求,但是因为想跟上新特性,就将var修改成了let,但后来总报错,不知道为什么,一点点比对发现这个不同,代码如下图所示:


image.png image.png

图片显示不清晰,实际上这一大段,包括 function draw(),是在一个函数内的,即successCallBack(),
当 var layout 改成 let layout后,总提示 layout is not a function,也就是在function draw里调用layout时出现的问题,这个是由ES6中新特性let和原var的区别造成的。
1 作用域
var的作用域是在定义的函数内,即在successCallBack()内,和function draw()在一个作用域内,而let是块级作用域,只在if(res.data.success)里面有效,所以draw并不能访问到layout。

2 变量提升
var是有变量提升的,也就是所有的var变量都会提到函数的最前面,可以在声明前使用,而let不存在。

所以,不一定所有用法都用新特性,而是该弄清楚差别,选择合适的使用。

相关文章

网友评论

    本文标题:var和let的区别

    本文链接:https://www.haomeiwen.com/subject/bscsvqtx.html