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
相关推荐
tryxr21 分钟前
Java 多线程标志位的使用
java·开发语言·volatile·内存可见性·标志位
APItesterCris33 分钟前
高并发场景下的挑战:1688 商品 API 的流量控制、缓存策略与异步处理方案
大数据·开发语言·数据库·缓存
yyy(十一月限定版)34 分钟前
c语言——栈和队列
java·开发语言·数据结构
feeday36 分钟前
Python 删除重复图片 优化版
开发语言·python
running up37 分钟前
Vite 全面解析:特性、对比、实践及最新演进
javascript·typescript
.格子衫.39 分钟前
JS原型链总结
开发语言·javascript·原型模式
麦麦鸡腿堡43 分钟前
Java_MySQL介绍
java·开发语言·mysql
于是我说43 分钟前
一份Python 面试常见问题清单 覆盖从初级到高级
开发语言·python·面试
shoubepatien43 分钟前
JavaWeb_Web基础
java·开发语言·前端·数据库·intellij-idea
吧啦蹦吧1 小时前
`org.springframework.util.ClassUtils#forName
开发语言·python