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
相关推荐
练习前端两年半2 分钟前
【Vue3 高级技巧】函数重载+Watch:打造类型安全的通用事件监听 Hook
前端·javascript·vue.js
赵庆明老师12 分钟前
VS2026扩展插件Visual Commander
java·开发语言
一只小鸟儿14 分钟前
门户短信发送验证码及验证功能
前端·javascript·jquery
额呃呃16 分钟前
信号量唤醒线程的实际机制
java·开发语言·jvm
程序员阿鹏21 分钟前
怎么理解削峰填谷?
java·开发语言·数据结构·spring·zookeeper·rabbitmq·rab
ht巷子24 分钟前
Qt:容器类的迭代
开发语言·c++·qt
shhpeng24 分钟前
Go语言中 的 defer 语句
开发语言·后端·golang
talenteddriver28 分钟前
mysql: MySQL中between子句和limit子句的区别
前端·javascript·数据库
不惑_29 分钟前
通俗理解多层感知机(MLP)
开发语言·人工智能·python·深度学习
小徐Chao努力34 分钟前
【Langchain4j-Java AI开发】02-模型参数配置与调优
java·开发语言·人工智能