Javascript 为什么这个变量在我之前有一个值;函数MyVar(){}";?

Javascript 为什么这个变量在我之前有一个值;函数MyVar(){}";?,javascript,Javascript,我试图理解为什么这段代码的行为是这样的: test.js var User; console.dir(User); function User(name) { // User = function(name) { ... seems not to be the same? this.name = name; } node test.js [Function: User] 为什么User在function()语句之前有一个值?该函数是在解析时定义的 请参阅:吊装 var和funct

我试图理解为什么这段代码的行为是这样的:

test.js

var User;

console.dir(User);

function User(name) { // User = function(name) { ... seems not to be the same?
    this.name = name;
}
node test.js

[Function: User]

为什么
User
function()
语句之前有一个值?

该函数是在解析时定义的

请参阅:

吊装

var
function
语句将自动提升到脚本顶部

这允许在定义函数之前使用函数,如下所示:

dothis();
function dothis() { alert('wow'); }
编辑
函数
这样的语句不受影响:

myfunc(); // won't work
var myfunc = function() { alert('nope'); }

函数声明语句的可能重复被视为出现在函数体的最顶端,而不管它们出现在代码中的什么位置;与
var
语句类似,它们不会在源代码中出现时生效。我不确定细节,我手头也没有标准的报价,所以这是一个评论。