js ES6状态下函数的可变参数传值

博客围绕扩展运算符和可变参数传参展开,虽未给出具体内容,但可知聚焦于这两项信息技术相关内容,它们在编程中对参数处理等方面有重要作用。
相比于ES6之前的js可变参数传参的获取,现在要容易的多

直接使用扩展运算符 ...

规则:
func(...a) {} // 其中a为传入参数组合在一起的数组
const func = (...a) => {
  console.log(a) // ["张三", 12, "中国", "北京大学"]
}

func('张三',12,'中国','北京大学')
这是一个非常好的问题! 你问的是: > **“如果函数名括号里加了东西”和“没有加东西”有什么区别?** 我们来详细解释这个问题。 --- ### ✅ 一、你说的“括号里加了东西”指的是什么? 在 JavaScript 中,函数定义的基本语法是: ```javascript function 函数名(参数列表) { // 函数体 } ``` 这里的 `( )` 是**参数列表**(parameters),也叫形参。 #### 🟢 示例对比 | 写法 | 代码 | |------|------| | 括号里**没有东西**(无参数) | `function sayHello() { ... }` | | 括号里**有东西**(有参数) | `function sayHello(name) { ... }` | --- ## 🔍 核心区别:是否有输入参数(Input) | 区别点 | 没有参数 `()` | 有参数 `(name)` | |--------|----------------|------------------| | 是否接收外部数据 | ❌ 不接收 | ✅ 接收 | | 能否根据不同输入做不同处理 | ❌ 固定行为 | ✅ 可变行为 | | 使用灵活性 | 低 | 高 | --- ### ✅ 二、具体例子说明 #### ✅ 1. 没有参数的函数(括号为空) ```javascript function greet() { console.log("Hello, user!"); } greet(); // 输出: Hello, user! greet(); // 还是输出: Hello, user! ``` 👉 这个函数每次运行都输出一样的内容,**无法个性化**。 --- #### ✅ 2. 有参数的函数(括号里加了东西) ```javascript function greet(name) { console.log("Hello, " + name + "!"); } greet("Alice"); // 输出: Hello, Alice! greet("Bob"); // 输出: Hello, Bob! ``` 👉 这个函数可以根据入的不同名字,输出不同的结果,**更灵活、可复用性强**。 --- ### ✅ 三、参数的本质:函数的“输入通道” 你可以把函数想象成一个机器: - **没有参数** → 机器没有输入口,只能按固定方式工作 - **有参数** → 机器有了输入口,可以接受原料进行加工 ```text +------------+ 输入 --> | 函数机器 | --> 输出 +------------+ ``` 比如这个函数: ```javascript function add(a, b) { return a + b; } ``` - `a` 和 `b` 是参数(输入) - 调用时入数:`add(3, 5)` → 返回 `8` - 如果没有参数,就写不出通用的加法函数 --- ### ✅ 四、调用时的区别(实参 vs 形参) | 概念 | 解释 | |------|------| | **形参(Parameters)** | 定义函数时括号里的变量名,如 `function greet(name)` 中的 `name` | | **实参(Arguments)** | 调用函数时实际进去的,如 `greet("Alice")` 中的 `"Alice"` | ```javascript function greet(name) { // name 是形参 console.log("Hi, " + name); } greet("Alice"); // "Alice" 是实参 ``` --- ### ✅ 五、多个参数的情况 你可以在括号里加多个参数,用逗号分隔: ```javascript function introduce(name, age, city) { console.log(`${name} is ${age} years old and lives in ${city}.`); } introduce("Alice", 25, "Beijing"); // 输出: Alice is 25 years old and lives in Beijing. ``` --- ### ✅ 六、默认参数(ES6 新特性) 即使有参数,也可以给它设置默认,防止调用时不: ```javascript function greet(name = "Guest") { console.log("Hello, " + name); } greet(); // 输出: Hello, Guest greet("Tom"); // 输出: Hello, Tom ``` --- ### ✅ 七、总结:括号里有没有东西的关键区别 | 对比项 | `function fn()` | `function fn(x)` | |--------|------------------|-------------------| | 参数数量 | 0 个 | 至少 1 个 | | 是否能接收外部数据 | 否 | 是 | | 灵活性 | 低(固定逻辑) | 高(可定制) | | 是否需要调用时 | 不需要 | 建议 | | 适用场景 | 执行固定任务(如启动动画、初始化) | 处理动态数据(如计算、渲染用户信息) | --- ### ✅ 类比理解 | 生活比喻 | 无参函数 | 有参函数 | |---------|----------|----------| | 微波炉按钮 | “开始加热”(固定3分钟) | “设定时间 + 开始”(可自定义) | | 餐厅点餐 | 只能吃套餐A | 可以选菜、选辣度 | | 打印机 | 打印默认文档 | 接收文件再打印 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值