es6函数参数默认值用“=”赋值,仅当参数为undefined时生效;支持表达式、前序参数引用及解构赋值,默认值每次调用重新计算。

直接在函数参数列表里用等号 = 赋值就行,这是 ES6 原生语法,简洁、语义明确,且只在参数为 undefined(包括完全不传)时生效。
基础写法:参数后直接写默认值
最常用也最直观的方式:
- 普通函数:
function greet(name = 'Guest', age = 18) { ... } - 箭头函数:
const greet = (name = 'Guest', age = 18) => `Hi ${name}, ${age} years old`;(注意:哪怕只有一个参数,带默认值也得加括号) - 调用时省略参数或传
undefined就会启用默认值:greet()→"Hi Guest, 18 years old";greet(undefined, 25)→"Hi Guest, 25 years old"
触发条件很关键:只认 undefined,不认其他假值
很多人误以为 null、0、false、空字符串会触发默认值,其实不会——它们会被原样接收:
-
greet('', 0)→ 名字是空串,年龄是0,不是默认值 -
greet(null, false)→ 名字是null,年龄是false - 真想处理
null或空字符串?得手动判断:name ?? 'Guest'或name != null ? name : 'Guest'
默认值支持表达式和前序参数引用
等号右边可以是任意合法表达式,而且每次调用都会重新求值:
- 调用函数时才执行:
function log(msg = Date.now()) { console.log(msg); }—— 每次调用都拿到新时间戳 - 可引用前面的参数:
function power(base, exp = base) { return base ** exp; },power(3)得27 - 不能循环依赖:
function bad(a = b, b = 1) { }会报ReferenceError - 可访问外层变量:
const prefix = 'v'; function version(num = prefix + '1.0') { return num; }
结合解构参数,适合配置类场景
常用于接收选项对象,支持深层默认值:
function connect({ host = 'localhost', port = 3000 } = {}) { ... }-
connect()→{ host: 'localhost', port: 3000 } -
connect({ host: 'api.example.com' })→{ host: 'api.example.com', port: 3000 } -
connect({ host: null, port: 8080 })→{ host: null, port: 8080 }(null不触发默认)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











