微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提升内部函数 - 内部函数和同名变量 - 输出?

如何解决提升内部函数 - 内部函数和同名变量 - 输出?

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

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

console.log(y())

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

解决方法

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

因此 function xvar x 在当前作用域中都创建了一个名为 x 的变量。 function x 还为该变量分配了一个函数。

带有 = 的作业不会被提升。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。