导读:本期聚焦于小伙伴创作的《javascript默认参数是什么_如何为函数参数设置默认值?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《javascript默认参数是什么_如何为函数参数设置默认值?》有用,将其分享出去将是对创作者最好的鼓励。

javascript默认参数指的是在函数定义时为参数预先设定的值,当函数调用时没有传入对应参数,或者传入的参数是undefined时,就会自动使用这个预设的默认值,避免参数缺失导致的逻辑错误。在ES6之前,javascript本身没有原生的默认参数语法,开发者需要手动通过逻辑判断实现默认值效果,ES6正式引入了默认参数特性,让参数默认值设置更加直观简洁。

javascript默认参数是什么_如何为函数参数设置默认值?

ES6之前如何手动设置参数默认值

在ES6规范发布之前,开发者通常会通过逻辑或运算符或者条件判断来为函数参数设置默认值,常见的实现方式有以下几种。

使用逻辑或运算符设置默认值

逻辑或运算符会在左侧值为假值时返回右侧的值,因此可以利用这个特性设置默认值,不过这种方式有个缺陷,当传入的参数是0、空字符串、false等合法假值时,也会被替换为默认值。

// 使用逻辑或设置默认值
function add(a, b) {
  // 当a是undefined、0、''等假值时,会使用10作为a的值
  a = a || 10;
  b = b || 20;
  return a + b;
}
console.log(add()); // 30,a和b都使用默认值
console.log(add(5)); // 25,a使用5,b使用默认值20
console.log(add(0, 5)); // 30,这里0是假值,a被替换为10,结果不符合预期

使用条件判断设置默认值

为了避免逻辑或运算符的缺陷,可以通过判断参数是否等于undefined来设置默认值,这种方式可以正确处理0、空字符串等合法假值。

function add(a, b) {
  if (a === undefined) {
    a = 10;
  }
  if (b === undefined) {
    b = 20;
  }
  return a + b;
}
console.log(add(0, 5)); // 5,0被正确识别为传入的参数,不会被替换
console.log(add()); // 30,使用默认值

ES6原生默认参数语法

ES6允许在函数定义时直接为参数指定默认值,语法是在参数后面用等号赋值,默认值的设置更加直观,也避免了手动判断的繁琐。

基本使用方式

直接在函数参数列表中为参数赋值即可设置默认值,当调用函数时没有传入该参数或者传入undefined时,就会使用默认值。

// ES6默认参数语法
function add(a = 10, b = 20) {
  return a + b;
}
console.log(add()); // 30,a和b都使用默认值
console.log(add(5)); // 25,a使用5,b使用默认值20
console.log(add(0, 5)); // 5,0被正确识别为传入的参数
console.log(add(undefined, 30)); // 40,a使用默认值10

默认值可以是表达式

默认参数的值不一定是固定值,也可以是表达式,甚至可以是函数调用,表达式会在参数需要使用默认值时才会执行,也就是惰性求值。

// 默认值是函数调用的返回值
function getDefaultA() {
  console.log('执行getDefaultA');
  return 10;
}
function add(a = getDefaultA(), b = 20) {
  return a + b;
}
console.log(add(5)); // 25,没有使用a的默认值,getDefaultA不会执行
console.log(add()); // 先输出执行getDefaultA,再输出30,a使用默认值,getDefaultA执行

默认参数可以引用其他参数

默认参数可以引用前面已经定义的参数,但是不能引用后面定义的参数,否则会报错。

function test(a = 10, b = a + 5) {
  return a + b;
}
console.log(test()); // 25,a是10,b是10+5=15
console.log(test(5)); // 10,a是5,b是5+5=10

// 下面的代码会报错,b在a前面定义,不能引用a
// function test2(b = a + 5, a = 10) {
//   return a + b;
// }

默认参数的注意事项

  • 默认参数只有在传入undefined或者没有传入参数时才会生效,传入null时不会使用默认值,因为null是一个明确的赋值,不是undefined。
  • 如果函数参数有默认值,函数内部的arguments对象不会跟随参数默认值变化,arguments还是保存调用时传入的实际参数。
  • 默认参数会形成一个单独的作用域,在这个作用域里定义的变量不会影响到函数外部的作用域。
function test(a = 10) {
  console.log(arguments.length); // 0,调用时没有传入参数
  console.log(arguments[0]); // undefined,arguments没有保存默认值
}
test();

// 默认参数的单独作用域示例
let x = 1;
function outer(x = x + 1) { // 这里的x引用的是参数作用域的x,还没定义,会报错
  return x;
}
// outer(); // 执行会报错,x is not defined

实际开发使用场景

默认参数在实际开发中非常实用,比如配置对象的默认值设置、可选参数的处理等场景都可以用到。

// 配置对象默认值设置
function createUser(options = {}) {
  const defaultOptions = {
    name: '默认用户',
    age: 18,
    gender: '未知'
  };
  // 合并传入的配置和默认配置
  const finalOptions = { ...defaultOptions, ...options };
  return finalOptions;
}
console.log(createUser()); // {name: '默认用户', age: 18, gender: '未知'}
console.log(createUser({ name: '张三', age: 20 })); // {name: '张三', age: 20, gender: '未知'}

javascript函数默认参数ES6参数默认值函数参数修改时间:2026-07-08 03:30:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。