变量提升
变量提升:代码执行时,js会将当前执行上下文中的 变量声明 提升到当前作用域的最前面,赋值操作不提升
同理,当前执行上下文中的函数也被会提升,并且 函数提升(使用function关键字声明)先于变量提升,函数的声明会被提升到当前作用域最前面,不调用函数
考虑下面例子:
1 | fn();//hello world |
上述例子相当于以下写法:
1 | function fn() { |
需要注意的点
使用let和const声明的变量没有变量提升,只能先声明后调用;
使用函数声明表达式声明的函数没有变量提升:
1 | console.log(add(2, 3));// Uncaught TypeError: add is not a function |