在ES6之前的呢,我们定义javascript的变量唯一的关键字就是var,这个var变量可有好多学问呢?例如我们定义一个变量如下:
var c = 10;
这里的变量c呢,我们可以理解成放衣服的柜子,也就是通常我们所说的内存空间,
而他的值呢就是柜子存放的衣服,就是10,
当程序执行到 var c = 10 时,其实是先去创建一个变量空间,此时的值还是undefined,
当执行过后才会把值 10 赋给 c,其实呢这就是平常所说的变量提升这样高大上的名称,看起来太专业了,
说了一大堆废话,还是来一张图说明问题
在这附上动态的效果图看的更明了
看到没有在右边的c的值一开始就是undefined,当执行完了之后c的值才为10
接下来我们在来看看,在javascript中还有一种定义变量的方式就是如下
直接变量赋值的形式 x = 10;
实际上呢这个变量是挂载在window这个全局对象上的
不信我们来console.log(window.x === x)
我们再打印出来看看
在window对象下找到了x
到了es6呢,我们变量声明可以使用let 来定义变量
也可以用const来定义常量
但是这个let变量声明关键字呢,他取消了变量声明的提升
我们来看看他的情况
他就是直接给他赋值了,没有undefined这个说法,
那么如果在es6的严格模式下的环境里面我们这样定义一个变量如下
x = 10
直接给报错了 x is not defined
再者相同的变量名称无法定义多次
而var关键字则相对比较自由一点
const是用来声明不可变的内容的,比如PI的值,等等
也不能重复声明,更不能修改变量的值
不能重复声明
今天就写到这里吧,明天继续写吧,
如果感兴趣的朋友可以关注我们的微信公众号