以下是来自节点网址模块源代码的片段。
var punycode = require('punycode');
var util = require('util');
exports.parse = urlParse;
exports.resolve = urlResolve;
exports.resolveObject = urlResolveObject;
exports.format = urlFormat;
exports.Url = Url;
function Url() {
this.protocol = null;
this.slashes = null;
this.auth = null;
this.host = null;
this.port = null;
this.hostname = null;
this.hash = null;
this.search = null;
this.query = null;
this.pathname = null;
this.path = null;
this.href = null;
}
正如您所看到的,' Url'在函数' Url'之前使用被定义了。 据我所知,这不是有效的javascript,但它可以正常工作。
有人可以告诉我为什么这样可以吗?为什么节点编写者喜欢这种惯例?
编辑:谢谢。我不了解'功能提升'因为前一个标题是错误的问题,修改过。
答案 0 :(得分:1)
alert(a);
function a(){}
alert(b);
var b = function(){}