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
相关推荐
GDAL11 分钟前
Mapbox GL JS 核心表达式:`==` 相等判断完全教程
javascript·mapbox
cheems952712 分钟前
锁策略的介绍
java·开发语言
清水白石00814 分钟前
《Python × 数据库:用 SQLAlchemy 解锁高效 ORM 编程的艺术》
开发语言·python·json
风中月隐21 分钟前
C语言中以坐标的方式图解“字母金字塔”的绘制
c语言·开发语言·算法·字母金子塔·坐标图解法
Arva .26 分钟前
说说线程的生命周期和状态
java·开发语言
1001101_QIA29 分钟前
C++中不能复制只能移动的类型
开发语言·c++
炸土豆30 分钟前
防抖节流里的this传递
前端·javascript
tryxr33 分钟前
HashTable、HashMap、ConcurrentHashMap 之间的区别
java·开发语言·hash
serendipity_hky35 分钟前
【go语言 | 第5篇】channel——多个goroutine之间通信
开发语言·后端·golang
林希_Rachel_傻希希36 分钟前
手写Promise--教学版本
前端·javascript·面试