这个题的输出是function 原因是函数提升大于变量提升
此时输出是 number 原因是在函数提升和变量提升以后,对a进行了number类型的赋值
使a成为了number
var存在变量提升,变量提升的本质是将其定义提升到其所在的作用域的顶部,但是赋值并不提升。函数提升分两种情况,函数定义,则只提升函数名,函数声明则是将包括函数体的所有内容提升到所在作用域顶部。
接下来看一个示例
此时输出10
此时输出undefined,原因是下边的var语句变量提升,导致成为了这样
声名提升而赋值不提升,因此 为undefined
此时输出报错,原因是let存在块级作用域以及暂时性死区,在声名之前无法使用,因此报错
使用const同理