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
相关推荐
天平5 小时前
油猴脚本创建webworker踩坑记录
前端·javascript·typescript
山河木马12 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林81812 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
kyriewen15 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
SmartBoyW16 小时前
深入ECMAScript规范:彻底搞懂JS隐式类型转换与底层ToPrimitive机制
前端·javascript
用户8524950718416 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo16 小时前
Vite进阶用法详解
前端·javascript·面试
铁皮饭盒18 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
小林ixn19 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript
东风破_19 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript