吊装是如何工作的?函数和变量的区别

how hoisting works ? difference between function and variable

我可以知道这段代码是如何执行的吗?

function scope() {
  return hosting;

  function hosting() {
    var hosting = '15';
  }
  var hosting = 12;

}

console.log(typeof scope())

这里是这段代码return函数,我们现在js引擎会将声明移到顶部所以我们得到函数,

function scope() {
  return hosting;

  var hosting = 12;
}

console.log(typeof scope())

但现在为什么它不是 return 号码?,但我知道我们需要使用 let 来避免这种情况

当 JS 提升一个函数时,它会知道 return 实际函数,但是当它是一个变量声明时,它会使用 undefined 作为值来提升它。除非达到实际的赋值行,否则它不会有值。

它不是 return 数字 12,因为 提升 仅适用于声明实际变量,而不是为其赋值。

这意味着您的编译器代码看起来像这样:

function scope() {
    var hosting;
    return hosting;

    hosting=12;

}

另外请记住return之后的所有内容都不会执行。

如果您想要 console.log 到 return 号码,您应该将托管声明放在 return 之上,如下所示:

function scope() {
  var hosting = 12;
  return hosting;

 
}

console.log(typeof scope())