如何提升自我调用功能?

时间:2018-01-15 15:39:12

标签: javascript hoisting

请参阅此代码示例:

var myFunc = function () {
  alert("hello world");
})();

这是一个函数表达式,不会被挂起。所以我的假设是它只在代码到达代码中的实际位置时运行。这是真的吗?

2 个答案:

答案 0 :(得分:4)

  

这是一个函数表达式,不会被挂起。

是。函数表达式不会被提升(自我调用或其他方式)。

除此之外,没有任何对存储在中的函数的引用,所以首先没有任何东西可以提升。

  

所以我的推测是它只运行......

函数声明被提升,但这与它们运行时无关。就在与函数名称匹配的变量名称获得它的值时(因此它可用于调用该函数)。

函数仅在调用时运行。

在您的代码中,然后处理函数体之后的()

var的{​​{1}}声明与所有myFunc声明一样,将会托管。它将获得初始值var,然后,当函数运行时,它将获得该函数的返回值(也是undefined)。

答案 1 :(得分:0)

是的,你是对的。

  

与函数声明不同,JavaScript中的函数表达式不会被提升。在定义函数表达式之前,不能使用函数表达式

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function