作者:追梦的青春灬_176 | 来源:互联网 | 2024-11-18 18:50
本文详细介绍了JavaScript中函数的基本概念和高级用法,包括函数的声明、参数传递、返回值、函数提升、函数表达式、IIFE即时调用函数表达式以及函数作用域等内容。
一、函数的基本概念
在 Javascript 中,函数是一种特殊的对象,可以通过关键字 function
来声明。函数的名称是一个标识符,用于区分不同的函数。
函数的基本语法如下:
function 函数名() { // 代码块 }
二、函数的基本用法
1. 形参与实参
函数可以接受多个参数,这些参数分为形参(形式参数)和实参(实际参数)。实参按照顺序赋值给形参。如果实参的数量少于形参的数量,未赋值的形参默认值为 undefined
。
通过 arguments
对象可以访问所有传递给函数的参数,并且可以修改这些参数的值。
2. 不定参数实现重载功能
通过 arguments.length
可以获取传递给函数的实际参数数量,从而实现函数的重载功能。
3. 函数的返回值
函数可以包含多个 return
语句,但只会执行第一个遇到的 return
语句并返回相应的值。
4. 函数作为参数
函数可以作为参数传递给其他函数,从而实现更复杂的逻辑。
三、函数的声明与表达式
1. 函数声明
函数声明总是有名函数,可以在声明之前调用,这是由于函数提升机制。
2. 函数表达式
函数表达式可以是匿名函数或有名函数,但有名函数的名字只能在函数内部使用。
使用函数表达式时,变量会被提升,但函数体不会被提升,因此在声明之前调用会报错。
四、函数进阶用法
1. IIFE 即时调用函数表达式
IIFE 是 Immediately Invoked Function Expression 的缩写,即立即调用的函数表达式。通过将函数转换为表达式并在定义时立即调用,可以实现局部作用域,避免污染全局命名空间。
2. 函数作用域
作用域是指变量的有效范围。Javascript 中主要有两种作用域:全局作用域和函数作用域。
全局作用域
所有在 script
标签中的代码都处于全局作用域中。全局作用域在页面加载时创建全局对象(Global Object),在页面关闭时销毁。全局作用域中的变量是全局对象的属性。
函数作用域
在函数内部定义的代码处于函数作用域中。函数执行时创建活动对象(Active Object),函数执行结束后销毁。函数作用域中的变量是活动对象的属性。