对于 J S JS JS代码, J S JS JS解释器会先进行预解析,然后再执行代码。
1.预解析会将所有 v a r var var变量声明提升到作用域的最前面,(没有赋值操作) 2.预解析会将所有 v a r var var函数声明提升到作用域的最前面,(没有调用函数操作)
/* fun(); var fun = function () { console.log('harris'); } 这样会报错. 预解析后会变成: var fun; fun(); fun=function(){ console.log('harris'); } */ f(); function f() { console.log('harris'); } //这样会正常执行