如何在定义有效之前使用函数?

时间:2014-07-07 16:19:20

标签: javascript node.js

以下是来自节点网址模块源代码的片段。

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,但它可以正常工作。

有人可以告诉我为什么这样可以吗?为什么节点编写者喜欢这种惯例?

编辑:谢谢。我不了解'功能提升'因为前一个标题是错误的问题,修改过。

1 个答案:

答案 0 :(得分:1)

像'function a(){}'这样的函数将首先定义,即使它被放在后面。 像'var a = function(){}'这样的函数将被定义为正常变量定义顺序。 检查此代码:

alert(a);
function a(){}

alert(b);
var b = function(){}

http://jsfiddle.net/j4v7E/