3

我试图理解为什么这段代码的行为方式如下:

测试.js

var User;

console.dir(User);

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

节点测试.js

[Function: User]

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

4

2 回答 2

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'); }
于 2013-09-21T00:34:12.450 回答
2

该函数是在解析时定义的。

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

于 2013-09-21T00:33:20.070 回答