javascript默认参数是什么_如何设置函数默认值【教程】

5次阅读

javaScript默认参数是es6原生特性,仅在参数为undefined时生效,NULL/0/”等falsy值不触发;支持表达式和函数调用求值,可引用前面参数但不可循环依赖,需注意??与||语义差异。

javascript默认参数是什么_如何设置函数默认值【教程】

javascript 默认参数不是靠 arguments 或手动判断模拟的,而是语言原生支持的语法特性,ES6(ES2015)起就能直接在函数声明中写 param = defaultValue

函数定义时直接写 = 设置默认值

最常用也最直观的方式:在参数列表里用等号赋值。它只在对应参数为 undefined 时生效,nullfalse0'' 都不会触发默认值。

  • function greet(name = 'Guest') { return `Hello, ${name}`; } —— greet() 返回 "Hello, Guest",但 greet('') 返回 "Hello, "
  • 多个参数可混合设置:function connect(host, port = 8080, timeout = 5000) { ... }
  • 默认值可以是表达式,甚至调用函数:function log(time = date.now(), msg = generateDefaultMsg()) { ... },每次调用都会重新求值

undefined 是唯一触发默认值的值

很多人误以为“falsy 值”会触发默认值,其实不会。这是最容易踩的坑。

  • myFunc(null)null 被传入,不使用默认值
  • myFunc(0)0 被传入,不使用默认值
  • 想兼容 null 或其他 falsy 值?得手动处理:function fn(val) { val = val ?? 'default'; ... }val != null ? val : 'default'
  • 注意 ??(空值合并)和 ||区别0 || 'default''default',但 0 ?? 'default'0

默认参数能访问前面已声明的参数

参数从左到右求值,后面的默认值可以引用前面的参数(包括解构参数),但不能引用自身或后面的参数。

立即学习Java免费学习笔记(深入)”;

  • function multiply(a, b = a * 2) { return a * b; } —— multiply(3)18
  • function createObj({ x, y }, { width = x, height = y } = {}) { ... } —— 解构参数也能参与依赖链
  • function bad(a = b, b = 1) { } 会报 ReferenceError,因为 b 还没初始化

真正要注意的是:默认参数的求值时机(每次调用都执行)、与 ??/|| 的语义差异、以及参数间依赖的顺序限制——这些不是语法糖,是实际影响逻辑正确性的细节。

text=ZqhQzanResources