JavaScript function默认参数赋值前后顺序差异

1、(num1,num2=num1) 当传值仅传一个参数时,先给到第一个参数即num1,num1再赋值给num2,

复制代码
function sum(num1, num2 = num1) {
  console.log(num1 + num2)
}
sum(10)//20
sum(10,3)//13

2、(t2=t1,t1) 当传值仅有一个参数时,先给到第一个参数即t2,可t1参数的值尚未初始化,所以t1也就是undefined

复制代码
function total(t2 = t1,t1) {
  console.log(t1 + t2)
}
total(10)//NaN  参数的值尚未初始化,导致的错误
total(10,3)//13

容易看错的默认赋值情况:(如果调用传参有值,默认值是无效的)

复制代码
function test(m = n, n = 2) {
    console.log(m, n)
}
test() // 报错 Uncaught ReferenceError: Cannot access 'n' before initialization
test(3) // 3 2
test(3, 4) // 3 4
相关推荐
二川bro7 小时前
Python在AI领域应用全景:2025趋势与案例
开发语言·人工智能·python
诸葛亮的芭蕉扇7 小时前
tree组件点击节点间隙的异常问题分析
前端·javascript·vue.js
CoderYanger7 小时前
优选算法-队列+宽搜(BFS):72.二叉树的最大宽度
java·开发语言·算法·leetcode·职场和发展·宽度优先·1024程序员节
疏狂难除7 小时前
随便玩玩lldb (二)
开发语言·后端·rust
星轨初途8 小时前
数据结构排序算法详解(5)——非比较函数:计数排序(鸽巢原理)及排序算法复杂度和稳定性分析
c语言·开发语言·数据结构·经验分享·笔记·算法·排序算法
月弦笙音8 小时前
【Promise.withResolvers】发现这个api还挺有用
前端·javascript·typescript
b***65328 小时前
GO 快速升级Go版本
开发语言·redis·golang
凡人程序员8 小时前
搭建简易版monorepo + turborepo
前端·javascript
Heo8 小时前
原来Webpack在大厂中这样进行性能优化!
前端·javascript·vue.js
颜酱8 小时前
CLI 工具开发的常用包对比和介绍
前端·javascript·node.js