下面的代码可以正常运行,因为test的声明被提升了。
test();
function test () {}
而下面的写法,test变成了undefined。test好像从函数声明变成函数表达式了,并且只提升了定义部分, 如下:
test(); // Uncaught TypeError: test is not a function
if(false){
function test () {}
}
类似于下面的写法:
test(); // Uncaught TypeError: test is not a function
if(false){
var test = function () {}
}
是因为es6之后的改动,让在块作用域里面的函数声明变成只会提升定义吗?
条件语句为false,都没执行到条件里面,你在条件外面当然访问不到函数啊,只有满足了条件,才能去执行函数的定义已经初始化。