Javascript中这些函数声明之间的区别是什么?

Javascript中这些函数声明之间的区别是什么?,javascript,function,declaration,Javascript,Function,Declaration,我很难理解以下声明之间的区别 var User = function(name, email) { this.name = name; this.email = email; }; 及 我知道最基本的区别是var User=function(name,email)在运行时创建,而function User(name,email)将在解析时创建 添加示例 这将在这里起作用,因为解析文件时,name可用 name(); function name () { console.

我很难理解以下声明之间的区别

var User = function(name, email) {
  this.name = name;
  this.email = email;
};


我知道最基本的区别是
var User=function(name,email)
在运行时创建,而
function User(name,email)
将在解析时创建

添加示例

这将在这里起作用,因为解析文件时,
name
可用

name();    
function name () {
    console.log('My Name')
}
但这将抛出一个名为
未定义不是函数的错误

但这里的问题是,在读取行
var name=function()
之前,它不会被声明


函数表达式与函数声明您可能会发现以下解释很有帮助:““解析”通常是将某些数据转换为另一种表示形式的过程。例如,对于JS,它可以是从文本到某种字节码(我实际上不知道)。但在那一刻,不可能创建任何运行时对象(如函数)。不同之处在于函数声明的求值先于其他任何东西。
name();    
function name () {
    console.log('My Name')
}
name()
var name = function(){
    console.log('My Name');
}