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

  • 更灵活的写法
  • 在实际开发(回调、事件)中大量使用
相关推荐
奔跑的呱呱牛2 小时前
@giszhc/vue-page-motion:Vue3 路由动画怎么做才“丝滑”?(附在线示例)
前端·javascript·vue.js
忒可君2 小时前
C# winform 自制分页功能
android·开发语言·c#
Rust研习社2 小时前
Rust 智能指针 Cell 与 RefCell 的内部可变性
开发语言·后端·rust
ThridTianFuStreet小貂蝉2 小时前
面试题4:讲一讲HTML5、CSS3新特性
前端·css3·html5
慕斯fuafua2 小时前
CSS——浮动
前端·css
leaves falling3 小时前
C++模板进阶
开发语言·c++
坐吃山猪3 小时前
Python27_协程游戏理解
开发语言·python·游戏
gCode Teacher 格码致知3 小时前
Javascript提高:小数精度和随机数-由Deepseek产生
开发语言·javascript·ecmascript
比特森林探险记3 小时前
【无标题】
java·前端