变量提升、函数提升
如果熟悉 js代码执行的过程 ,这个问题不难理解 一、变量提升 ES5中没有块作用域,有全局作用域、局部作用域(函数)等 // 不声明定义变量 console.log(name) //报错,变量没有定义 // 变量提升 console.log(info) // undefined,不报错 var info = "hello"; function fun(){ console.log(a) // undefined,不报错 var a = 'world' console.log(a) // world } fun(); 之所以出现这种情况,是因为变量提升导致的;上述过程相当于: var info; // 先声明变量,没有赋值 function fun(){ var a; // 声明变量,没有赋值 console.log(a) // undefined,不报错 a = 'world' console.log(a) // world } // 不声明定义变量 console.log(name) //报错,变量没有定义声明 // 变量提升 console.log(info) // undefined,不报错 info = "hello"; fun(); 二、函数提升 创建函数有三种方式: 1.函数声明 2.函数表达式 3.使用Function对象创建