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
相关推荐
tmacfrank7 分钟前
Java 原生网络编程(BIO | NIO | Reactor 模式)
java·开发语言·网络
沐土Arvin9 分钟前
深入理解 requestIdleCallback:浏览器空闲时段的性能优化利器
开发语言·前端·javascript·设计模式·html
tyatyatya17 分钟前
MATLAB的神经网络工具箱
开发语言·神经网络·matlab
unityのkiven18 分钟前
C++中析构函数不设为virtual导致内存泄漏示例
开发语言·c++
keke1044 分钟前
Java【14_3】接口(Comparable和Comparator)、内部类-示例
java·开发语言·servlet
小破农1 小时前
C++篇——多态
开发语言·c++
Q_Q19632884751 小时前
python的漫画网站管理系统
开发语言·spring boot·python·django·flask·node.js·php
言之。1 小时前
Go 语言中接口类型转换为具体类型
开发语言·后端·golang
咖啡の猫1 小时前
JavaScript基础-创建对象的三种方式
开发语言·javascript·ecmascript
代码不停1 小时前
Java二叉树题目练习
java·开发语言·数据结构