变量提升

1.啥叫变量提升?

我们知道变量如果没定义就输出的话,就会报错not defined

image.png

如果是在定义语句的上面调用的话,就会输出undefined,为啥嘞?

image.png

这种情况就叫做变量提升,在定义语句上面调用变量的话,会假设在调用语句上面加了一句定义而未赋值的语句

image.png

当然我们知道,如果定义一个变量但没给他赋值的话,就会得到undefined,so,变量提升的结果就是undefined

对于var 而言,变量提升不只限于定义变量的时候,定义函数的时候也支持变量提升

我们知道有两种定义函数的方式,一种是用function关键字声明定义,一种是函数直接量的方式,第一种方式,你随便在哪调用都行,可以在定义之前调用。第二种方式的话,你就不能在定义之前调用,会报错说函数未定义,输出那个变量的话就是undefined,原理就是变量提升

image.png
image.png

2.let没有变量提升

image.png

没错,没有变量提升的let,如果你在定义它之前输出它的话,就会报错了

你可能感兴趣的:(ES6)