请参阅此代码示例:
var myFunc = function () {
alert("hello world");
})();
这是一个函数表达式,不会被挂起。所以我的假设是它只在代码到达代码中的实际位置时运行。这是真的吗?
答案 0 :(得分:4)
这是一个函数表达式,不会被挂起。
是。函数表达式不会被提升(自我调用或其他方式)。
除此之外,没有任何对存储在中的函数的引用,所以首先没有任何东西可以提升。
所以我的推测是它只运行......
函数声明被提升,但这与它们运行时无关。就在与函数名称匹配的变量名称获得它的值时(因此它可用于调用该函数)。
函数仅在调用时运行。
在您的代码中,然后处理函数体之后的()
。
var
的{{1}}声明与所有myFunc
声明一样,将会托管。它将获得初始值var
,然后,当函数运行时,它将获得该函数的返回值(也是undefined
)。
答案 1 :(得分:0)
是的,你是对的。
与函数声明不同,JavaScript中的函数表达式不会被提升。在定义函数表达式之前,不能使用函数表达式
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function