我试图理解为什么这段代码的行为方式如下:
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()
语句之前有值?
答案 0 :(得分:5)
起重! http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
var
和function
语句会自动提升到脚本的顶部!
这允许在定义函数之前使用它们,如下所示:
dothis();
function dothis() { alert('wow'); }
这样的 编辑 function
语句不会受到影响:
myfunc(); // won't work
var myfunc = function() { alert('nope'); }
答案 1 :(得分:2)
该功能是在解析时定义的。
请参阅:var functionName = function() {} vs function functionName() {}