为什么这个变量在我执行“函数MyVar(){}”之前有一个值?

时间:2013-09-21 00:32:04

标签: 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]

为什么Userfunction()语句之前有值?

2 个答案:

答案 0 :(得分:5)

起重! http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html

varfunction语句会自动提升到脚本的顶部!

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

dothis();
function dothis() { alert('wow'); }
这样的

编辑 function语句不会受到影响:

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

答案 1 :(得分:2)

该功能是在解析时定义的。

请参阅:var functionName = function() {} vs function functionName() {}