Javascript 函数表达式?

Javascript 函数表达式?,javascript,Javascript,资料来源: “与函数声明不同,JavaScript中的函数表达式不会被提升。在声明函数表达式之前,不能使用它们。” 示例: var hey = function(){ console.log("hi"); } Chrome的控制台:window.hey返回 function (){ console.log("hi"); } 它说的是你不能写: hey(); var hey = function() { console.log("hi"); } 因为在将函数表达式赋给变量之前

资料来源:
“与函数声明不同,JavaScript中的函数表达式不会被提升。在声明函数表达式之前,不能使用它们。”

示例:

var hey = function(){
    console.log("hi");
}
Chrome的控制台:window.hey返回

function (){
console.log("hi");
}

它说的是你不能写:

hey();
var hey = function() {
    console.log("hi");
}
因为在将函数表达式赋给变量之前,您正在使用变量
hey
。但你可以写:

因为函数声明被提升到包含函数的开头


有关更多信息,请参见

以@Barmar的答案为基础,当您这样做时:

hey();
var hey = function() {
    console.log("hi");
}
从技术上讲,变量声明仍然挂起,但赋值仍保留在写入的位置,因此它相当于:

var hey;
hey(); // hey is declared as a variable, but is still undefined.
hey = function() {
    console.log("hi");
}

这里有问题吗?我没有看到任何问题,请说明你想知道什么。问题是什么?您正在使用
窗口。嘿
声明函数后,您引用的文档不适用。我猜他不清楚“提升”这个词<代码>函数x()甚至可以在声明之前调用,而
var x=function()
在定义之前是不可用的。是的..我在脑子里搞砸了。现在明白了。
var hey;
hey(); // hey is declared as a variable, but is still undefined.
hey = function() {
    console.log("hi");
}