JavaScript面试题:提升(hoisting)是什么意思?

话题: JavaScript 难度: ⭐⭐⭐⭐

提升(hoisting)是指JavaScript的解释器将所有的变量和函数声明都提升到该作用域的顶部,有两种提升类型:

  • 变量提升
  • 函数提升

在一个作用域中通过声明的变量和函数在整个作用域中都可以使用。

var a = 2;
foo();                 // works because `foo()`
                         // declaration is "hoisted"

function foo() {
    a = 3;
    console.log( a );   // 3
    var a;             // declaration is "hoisted"
                         // to the top of `foo()`
}

console.log( a );   // 2
复制代码

虽然foo()函数在后面定义,但是在前面也可以调用。

作者:Fundebug
来源:掘金

THE END