【问题标题】:Hoisting inside function - inner function and variable having same name - Output?提升内部函数 - 内部函数和具有相同名称的变量 - 输出?
【发布时间】:2021-08-26 11:21:13
【问题描述】:

function y() {
  var x = 'hi';

  function x() {
    return 'bye';
  };
  return x(); // x is not a function
  return x; // 'hi'
}

console.log(y())

无法执行此函数。谁能解释一下?

【问题讨论】:

  • 你的变量名和函数名是一样的。更改其中任何一个都可以解决问题

标签: javascript function hoisting


【解决方案1】:

函数和变量声明被提升。函数声明也提升了值的赋值。

所以function xvar x 在当前范围内创建了一个名为x 的变量。 function x 还为该变量分配了一个函数。

= 的分配不会被提升。

所以x = 'hi' 用字符串覆盖了该函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2021-05-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多