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
相关推荐
2501_9307077813 小时前
使用C#代码在 PowerPoint 中组合或取消组合形状
开发语言·c#
晚烛13 小时前
CANN 调试工具与性能剖析:从日志分析到 NPU 行为追踪的完整调试体系
开发语言·windows·python·深度学习·缓存
惊鸿一博13 小时前
图标加载方式_zeroIcon_是否加前缀mdi
开发语言·前端·javascript
森G13 小时前
TypeScript 基础类型
开发语言·typescript
你很易烊千玺14 小时前
JS 异步 从零讲(大白话 + 真实场景 + 可运行案例)
前端·javascript·vue.js
huipeng92614 小时前
企业级微服务开发实战(一):项目启动与工程化设计
java·开发语言·spring boot·spring cloud·微服务·云原生·架构
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ14 小时前
java实现excel导入、下载模板方法
java·开发语言·excel
眠りたいです15 小时前
现代C++:C++14中的新语言特性和库特性
c语言·开发语言·c++
华洛15 小时前
讲讲如何在传统产品中挖掘AI需求
javascript·产品经理·产品
叶小鸡16 小时前
Java 篇-项目实战-AI 天机学堂(从 0 到 1)-day1
java·开发语言