《用得上的前端知识》系列 - 你我都很忙,能用100字说清楚,绝不写万字长文
基本概念
变量提升:代码块(全局代码、函数代码等)中,无论在哪里进行var声明和函数声明,在编译阶段都会被提取到当前执行上下文的变量环境组件指向的词法环境对象中,且初始值为 undefined。所以这些变量或函数在整个代码块内部的任何地方都能被访问,就好像变量的声明和函数的声明被提升到代码开头一样;
需要注意的地方
ES6规定块级作用域内部声明的函数,和通过 var 声明变量的行为类似。
console.log( fn ); // output => undefined
if( true ){
function fn(){}
}
// 上述代码等同于以下代码,所以 fn 的值为 undefined,而不是 fn 函数
console.log( fn );
if( true ){
var fn = function(){}
}