javascript函数体显示的变量与函数变量相同

标签 javascript

我有一个问题,请查看代码片段,我可以看到它在一些js库中被调用。

谁能告诉我这段代码的执行顺序是什么?在我看来,首先,编译器声明了一个变量A。当执行时,它定义了一个函数 并将其赋值给变量 A ,但在函数体中,变量 A 无法在任何地方引用,因为 'var A' 仍未被赋值给函数。

我希望我已经清楚地表达了我的问题。

请告诉我哪里错了。

    var A= function(){reutrn A;}
    console.log(A()()().....)    /*no mater how many '()'s,it still returns the "function (){return A }" */

最佳答案

但是函数被分配给A!这正是第一行的含义。下面是它的实际工作原理:

var A; // Definitions are "hoisted" to the top of the scope.
A = function() {
  return A; // Return whatever value is bound to "A", this may change
            // before the function is run
};
A(); // "A" is a function, return that function
A()(); // Since the value of "A" hasn't changed, we again return that function
// Ad infinitum...

理解这一点有两个关键要素:hoisting事实上,在调用函数之前,函数内部捕获的值可能会发生变化。

关于javascript函数体显示的变量与函数变量相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747996/

相关文章:

java - 让我的 ActionForward 识别不同的提交按钮 - 通过 Struts Java 和 JSP

javascript - 检测由 JS 引起的 HTMLobject 变化

javascript - Angular JS $scope.$apply 给出插值错误 "TypeError: Converting circular structure to JSON"

javascript - 数组不会通过ajax传递

php - .load() 循环将 html 内容放入容器中

javascript - 从加载时抓取数据

javascript - Grails和Javascript

javascript - 实时检查用户名可用性?

JavaScript/JQuery : Variable Undefined After Performing Ajax

javascript - Vue、js 组件计算属性中对 DOM 元素的引用