ES6函数参数默认值与解构赋值的完整指南

作者:青柠

时间:2026-10-23

浏览:622

本文详解ES6中函数参数的默认值设置及解构赋值用法。通过对比ES5写法,展示如何为函数参数指定默认值,并深入解析数组解构在函数参数中的应用。重点讨论处理无参调用时的默认数组匹配、undefined与null/NaN的区别,以及嵌套解构的复杂场景与潜在陷阱。

文章目录

ES6函数参数默认值与解构赋值概述

本文介绍ES6中函数参数默认值与解构赋值的实际应用案例,供读者参考学习。

在ES6标准下,函数参数支持解构赋值与默认值的结合使用,具体用法如下所示。

ES5与ES6默认值写法对比

回顾ES6发布之前,设置函数默认值的传统写法。


function test(x,y) {
 x = x || 12;
 y = y || 22;
 console.log(x,y);
}
test(); // 12 22
test(1,2) // 1 2

介绍ES6标准中为函数参数直接指定默认值的方法。


function test(x=12, y=22) {
 console.log(x,y);
}
test(); // 12 22
test(3,4); // 3 4

数组参数默认值与错误处理

探讨ES6中针对数组类型参数的默认值设置方式。


function test([x=2,y=1]) {
 console.log(x, y);
}
test([]); // 2, 1
test([3,4]) // 3 4
test(); // 报错: Uncaught TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined

针对上述代码中无参调用报错的问题,通过引入默认空数组来修复错误。


function test([x=2,y=1]=[]) {
 console.log(x, y);
}
test();  // 2 1

复杂解构应用与注意事项

展示该语法在更复杂场景下的其他应用方式。


function test([x=2,y=1]=[], z=90) {
 console.log(x, y, z);
}
test();  // 2 1 90
test(undefined, 80); // 2 1 80
test('', 50); // 2 1 50 正常输出
// test(null, 80); // 报错,不能填入null Uncaught TypeError: Cannot read property 'Symbol(Symbol.iterator)' of object
// test(NaN, 60); // 报错: Uncaught TypeError: undefined is not a function

需注意,上述函数参数机制可以接受undefined作为输入,但无法正确处理null和NaN值。

接下来介绍更为复杂的嵌套解构应用场景。


function test([x=2,[y=3,w=4]=[]]=[], z=90) {
 console.log(x, y, w, z);
}
test(); // 2 3 4 90
test(undefined, undefined); // 2 3 4 90
test(undefined, 8); // 2 3 4 8
test([5,[]],12); // 5 3 4 12
test([5,[2,6]],12); // 5 2 6 12

在使用复杂解构时,需特别注意以下潜在陷阱。


function test([x,y]=[1,2]) {
 console.log(x,y);
}
test(); // 1 2
test([]); // undefined undefined

感兴趣的用户可通过在线HTML/CSS/JavaScript代码运行工具http://tools.jb51.net/code/HtmlJsRun测试上述代码的运行结果。

如需了解更多JavaScript相关知识,可查阅本站系列教程,包括《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》。

希望本文提供的JavaScript程序设计内容能对大家有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章