JavaScript 有名函数与无名函数的区别及调用时机

作者:木棉

时间:2026-10-22

浏览:306

本文对比 JavaScript 中有名函数(函数声明)与无名函数(函数表达式)的定义方式及调用差异。通过代码示例说明,有名函数支持提升机制,可在定义前调用;而无名函数必须在使用前完成定义,否则会导致引用错误。同时介绍了无名函数的立即执行形式。

文章目录

JavaScript 有名函数与无名函数的定义对比

首先通过一个具体示例来观察两种函数的定义方式。

代码如下:

function a(){
alert("我是本站");
} 


2


代码如下:

var a = function(){
alert("我是本站");
} 

无名函数的立即执行形式

上述两种写法在功能上是等价的。其中写法 1 属于有名函数(函数声明),而写法 2 则是将一个匿名函数赋值给变量 a(函数表达式)。在此场景下,两者效果相同。此外,写法 2 允许在函数定义后立即添加括号,从而实现创建完成后立即调用。例如:


var i = function(obj){


alert(obj);


}("我是本站");


调用时机:函数提升与定义顺序

有名函数与无名函数的一个关键区别在于调用时机:有名函数支持提升(Hoisting),允许在定义之前被调用;而无名函数必须在调用之前完成定义。以下是一个使用无名函数时常见的错误示例:


i();


var i = function(){


alert("我是本站");


}

正确的写法应当如下:


var i = function(){


alert("我是本站");


}

i();


或者改用有名函数的形式:


i();


function i(){


alert("我是本站");


}

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章