JavaScript 进阶基础:函数、作用域与常用技巧总结

目录

一、函数到底解决了什么问题?

二、函数的基本用法

[1. 声明函数](#1. 声明函数)

[2. 调用函数](#2. 调用函数)

[3. 一个更实际的例子](#3. 一个更实际的例子)

三、参数:让函数变得灵活

参数使用建议

四、返回值:函数的输出

[关于 return,有几个关键点:](#关于 return,有几个关键点:)

五、作用域:变量到底能在哪里用?

[1. 全局作用域](#1. 全局作用域)

[2. 局部作用域(函数作用域)](#2. 局部作用域(函数作用域))

[3. 查找规则](#3. 查找规则)

[⚠️ 一个坑(不推荐写法)](#⚠️ 一个坑(不推荐写法))

六、匿名函数

[1. 函数表达式](#1. 函数表达式)

[2. 立即执行函数(IIFE)](#2. 立即执行函数(IIFE))

七、核心总结

[1. 函数](#1. 函数)

[2. 参数 & 返回值](#2. 参数 & 返回值)

[3. 作用域](#3. 作用域)

[4. 匿名函数](#4. 匿名函数)


一、函数到底解决了什么问题?

写代码时很容易遇到一种情况:

复制代码
console.log('嗨~')
console.log('嗨~')
console.log('嗨~')

如果某段逻辑需要重复使用,一直复制粘贴显然不是办法。

👉 这时候就需要函数。

函数的本质可以理解为:

把一段逻辑"封装"起来,需要的时候再调用


二、函数的基本用法

1. 声明函数

复制代码
function sayHi() {
  console.log('嗨~')
}

2. 调用函数

复制代码
sayHi()

👉 注意:函数声明之后不会自动执行,必须调用才会运行。


3. 一个更实际的例子

复制代码
function printStar() {
  document.write('*<br>')
  document.write('**<br>')
  document.write('***<br>')
}

printStar()
printStar()

如果不用函数,这段代码会非常冗余。


三、参数:让函数变得灵活

如果函数只能写死逻辑,那价值其实有限。

比如打招呼:

复制代码
function sayHi(name) {
  console.log('嗨~' + name)
}

sayHi('小明')
sayHi('小红')

👉 关键点:

  • name形参(形式参数)
  • '小明'实参(实际参数)

可以理解为:

形参 = 函数内部的变量

实参 = 给变量赋的值


参数使用建议

  • 参数顺序要一致
  • 尽量保证"传几个参数,定义几个参数"

四、返回值:函数的输出

函数不仅可以执行逻辑,还可以"返回结果"。

复制代码
function sum(a, b) {
  return a + b
}

let result = sum(5, 10)

关于 return,有几个关键点:

  1. return 用于返回结果
  2. 一旦执行 return,函数立即结束
  3. 一个函数通常只写一个 return
  4. 没写 return → 默认返回 undefined

五、作用域:变量到底能在哪里用?

可以简单理解为:

变量在哪个范围内有效


1. 全局作用域

复制代码
let num = 10
  • 在整个文件中都可以使用
  • 生命周期比较长

2. 局部作用域(函数作用域)

复制代码
function test() {
  let num = 20
}
  • 只能在函数内部使用
  • 外部访问不到

3. 查找规则

👉 变量查找遵循:

先找局部 → 再找全局

例如:

复制代码
let num = 10

function test() {
  let num = 20
  console.log(num)
}

test() // 输出 20

⚠️ 一个坑(不推荐写法)

复制代码
function test() {
  num = 100
}

👉 这会变成全局变量,非常危险,实际开发中一定要避免。


六、匿名函数

除了普通函数,还有一种更灵活的写法。


1. 函数表达式

复制代码
let fn = function() {
  console.log('函数表达式')
}

fn()

👉 特点:

  • 没有函数名
  • 通过变量调用

2. 立即执行函数(IIFE)

复制代码
(function() {
  console.log('立即执行')
})()

或者:

复制代码
(function() {
  console.log('立即执行')
}())

👉 特点:

  • 定义完立刻执行
  • 不需要手动调用
  • 常用于隔离作用域(避免变量污染)

七、核心总结

1. 函数

  • 用来封装代码,提高复用性
  • 写完必须调用才执行

2. 参数 & 返回值

  • 参数 → 输入
  • return → 输出

👉 函数 = 输入 → 处理 → 输出


3. 作用域

  • 局部优先
  • 避免污染全局变量

4. 匿名函数

  • 更灵活的写法
  • 在实际开发(回调、事件)中大量使用
相关推荐
AskHarries4 分钟前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
Moment18 分钟前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
qcx231 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
sleven fung1 小时前
MinerU与BabelDOC与KTransformers与OpenAI API库
开发语言·python·ai·langchain
萤萤七悬1 小时前
【Python笔记】AI帮实现CLI工具-使用argparse.ArgumentParser接收命令参数
开发语言·笔记·python
iCxhust1 小时前
C# 命令行指令 查看二进制文件
开发语言·单片机·嵌入式硬件·c#·proteus·微机原理·8088单板机
csdn_aspnet1 小时前
Java 霍尔分区算法(Hoare‘s Partition Algorithm)
java·开发语言·算法
诸葛务农2 小时前
道路行驶条件下电动汽车永磁电机的有效使用寿命及永磁体的失效和回收再利用(下)
java·开发语言·算法
kyriewen2 小时前
大文件上传最全指南:分片、断点续传、秒传,一篇就够了
前端·javascript·面试
oort1232 小时前
VLStream:全开源决策式AI视频平台,赋能企业构建自主可控、降本增效的智能视觉应用介绍
大数据·开发语言·人工智能·开源·音视频·数据库架构