javascript - 下面代码中的输出是如何变成1的,谁能解释一下吗?

标签 javascript jquery

下面代码中的输出是如何变成1的,谁能解释一下吗?

var foo = 1;
function bar() {
   foo = 10;
   return;
   function foo() {}
}
bar();
alert(foo);

最佳答案

您定义了一个具有相同名称 foo 的函数,因此在方法 foo 中(充当局部变量)引用函数。您可以将 console.log(foo) 视为 bar() 方法内的函数。

var foo = 1;

function bar() {
  console.log(foo);
  foo = 10;
  return;

  function foo() {}
}
var b=bar();
alert(foo);

<小时/>

您可以做的是在全局上下文中获取变量(window['foo'])并更新或重命名变量或函数。

var foo = 1;

function bar() {
  window['foo'] = 10;
  return;

  function foo() {}
}
var b=bar();
alert(foo);

关于javascript - 下面代码中的输出是如何变成1的,谁能解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38763189/

相关文章:

javascript - 为什么引用对象消失后变量仍然包含数据

jquery - 如何在li元素右侧顶部设置删除按钮?

javascript - 基于属性将javascript中的对象数组拆分为单独的数组

javascript - 如何转换为使用 Promises 和 Q Library

javascript - 在 rpivottable 中分组排序

javascript - 在 Javascript 中将 "This"放入命名空间

javascript - jquery 计算给定动态填充容器的高度/宽度

javascript - href:链接回上一页上的某个类

php - CKEditor 中的 Jquery 拖放

javascript - Scroll 上的视差图像和粘性标题无法正常工作