JavaScript 函数核心机制:arguments、作用域与自执行

作者:异步漫步

时间:2026-10-30

浏览:68

本文总结 JavaScript 函数的关键基础概念,深入解析 arguments 对象如何接收实参并用于动态求和,阐明全局与局部变量的作用域规则及隐式全局变量风险,介绍立即执行函数(IIFE)的语法与优势,以及函数在运行时自我重写的特性与行为。

文章目录

函数是 JavaScript 中可重复使用的代码块,通常由事件触发或被显式调用时执行。本文将重点梳理 JavaScript 函数相关的基础知识及常见易错点。

arguments 对象的使用

一、函数中的 arguments 对象

每个函数内部都包含一个名为 arguments 的对象,该对象用于获取函数被调用时传入的所有参数。

需要注意的是,arguments 接收的是实际传递的参数值(实参)。

以下示例展示了如何利用 arguments 对象的特性编写一个支持任意数量参数求和的函数:


function sumOnSteroids(){ 
var I, res = 0; 
var number_of_params = arguments.length; 
for(I = 0; I < number_of_params; i++){ 
res += arguments[i]; 
} 
return res; 
} 

变量作用域规则

二、关于变量的作用域

在 JavaScript 中,变量无法定义特定的块级作用域(如 if 或 for 块),但可以定义其所属的函数作用域。

JavaScript 中的全局变量是指声明在所有函数外部的变量。

在函数内部定义的局部变量,在函数外部是不可见的,即无法直接访问。

如果在函数内部声明变量时省略了 var 关键字,该变量会被隐式地声明为全局变量(即使定义在函数内部,外部也可访问)。这类变量在函数被调用前不存在,仅在函数执行时被创建并赋予全局作用域。

自调用函数机制

三、自调用函数(立即执行函数)

自调用函数是指在定义完成后立即自动执行的函数,其基本语法结构如下:


{ 
function(name){ 
alert(‘Hello' + name + ‘!'); 
} 
}(‘Martin')

函数定义后的括号 () 可用于传递参数,括号内声明的值会自动传递给 function 的参数列表。

使用上述自调用匿名函数(IIFE)的一个主要优势是它不会在全局作用域中创建任何变量,从而避免污染全局命名空间。

函数自我重写特性

四、可自行重写的函数

这类函数的特点是在执行过程中可以重新定义自身,以下是一个具体示例:


function a(){ 
alert(“A”); 
a = function(){ 
alert(“B”) 
}; 
}

首次调用 a() 时,执行 alert(“A”);第二次调用 a() 时,则执行 alert(“B”)。这是因为在第一次执行该函数时,代码将全局变量 a 重新赋值为一个新的函数定义。

以上介绍了 JavaScript 函数相关的基础知识盲点,包括 arguments 对象、作用域机制、自调用及函数重写等内容,希望对读者有所帮助。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章