a house in the woods

Hi, nice to meet you.

  1. 1. 变量提升与函数提升

变量提升与函数提升

1
2
3
4
5
6
7
function outter () {
return inner;
function inner () {}
var inner;
inner = 9;
}
typeof outter() // 'function';

变量提升和函数提升指的是JS预编译的一个操作。

首先对于var声明的变量,只存在全局作用域和函数作用域,不像letconst还有块作用域。

  1. 变量提升(指var声明的变量)指的是作用域内出现的变量声明会把声明放到作用域的开头
  2. 函数提升是指除了1外的操作,还会把函数提前赋值给变量

根据上面两个规则,上面的代码经预编译会变成如下形式:

1
2
3
4
5
6
function outter () {
var inner;
inner = function inner() {}
return inner;
inner = 9;
}

This article was last updated on days ago, and the information described in the article may have changed.