You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript函数参数默认值问题:lastname未定义时需显示Doe

问题排查与修复方案

核心问题

  1. 你编写的if (lastname === undefined)判断语句位于函数外部,不属于greetByDefault函数的作用域,函数执行时根本不会触发这个逻辑,属于无效代码。
  2. 当仅传入一个参数调用函数时,lastname参数会自动被赋值为undefined,此时函数直接返回拼接后的字符串,自然会出现undefined的结果。

修复方案

这里提供两种可行的修复方式:

方案一:函数内部手动处理参数默认值

let name = 'John'

function greetByDefault(firstname, lastname){
    // 当lastname未传入或为undefined时,替换为'Doe'
    const actualLastname = lastname === undefined ? 'Doe' : lastname;
    return 'Hi ' + firstname +' '+ actualLastname + '!';
}

console.log(greetByDefault('Jane', 'Doe'));
console.log(greetByDefault(name));

方案二:使用ES6参数默认值(更简洁)

ES6支持直接为函数参数设置默认值,当参数未传入或传入undefined时,会自动使用预设的默认值:

let name = 'John'

function greetByDefault(firstname, lastname = 'Doe'){
    return 'Hi ' + firstname +' '+ lastname + '!';
}

console.log(greetByDefault('Jane', 'Doe'));
console.log(greetByDefault(name));

两种方案执行后,控制台都会输出你期望的结果:

Hi Jane Doe!
Hi John Doe!

内容的提问来源于stack exchange,提问作者Geo17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:45:14