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. 匿名函数

  • 更灵活的写法
  • 在实际开发(回调、事件)中大量使用
相关推荐
前端老石人几秒前
CSS 值定义语法
前端·css
IT知识分享1 分钟前
数字上标、下标如何打,6种常用方法详解
开发语言·c#·xhtml
qwert10377 分钟前
深入解析Python标识符:定义、规则、规范与实践指南
开发语言·数据库·python
sheeta199811 分钟前
Vue 前端基础笔记
前端·vue.js·笔记
小小小小宇11 分钟前
GitLab + GitLab Runner + Qiankun 微前端 + Nginx + Node 中间件 前端开发机从零搭建 CI/CD 全流程
前端
cqwuliu14 分钟前
Freemarker模板工具
java·开发语言
学习,学习,在学习14 分钟前
Qt多线程的使用与注意事项
开发语言·数据库·qt
asdfg125896315 分钟前
`(line1, line2) -> line1 + line2` 此Lambda 表达式的理解
java·开发语言
前端那点事15 分钟前
别再写垃圾组件!Vue3 如何设计「真正可复用」的高质量通用组件
前端·vue.js
如竟没有火炬17 分钟前
去除重复字母——贪心+单调栈
开发语言·数据结构·python·算法·leetcode·深度优先