使用Node生成package.json时,箭头函数直接返回模板字符串为何返回undefined?
为什么箭头函数返回undefined?
嘿,这个问题大概率是箭头函数显式返回和隐式返回的语法坑,或者是你写代码时的小笔误!咱们一步步拆解来看:
先看你能正常工作的第一个函数:
const generatePackageJson = (name) => { const package = ` { "name": "${name}", } `; return package; }
这个函数用{}包裹了完整的函数体,并且显式调用了return语句返回生成的模板字符串,逻辑清晰,所以能正确输出包含name参数的结果。
再看你说返回undefined的第二个函数:
你给出的写法是:
const generatePackageJson = (name) => { return ` { "name": "${name}", } `; }
理论上这个函数和第一个的效果应该完全一致,但如果它真的返回undefined,只有一个最可能的原因——你实际写代码时漏掉了return关键字!
比如你不小心写成了这样:
const generatePackageJson = (name) => { ` { "name": "${name}", } `; }
箭头函数的规则是:如果用{}包裹函数体,就不会自动返回函数体内的表达式结果,必须显式写return。上面的代码里只有一个模板字符串表达式,没有任何返回语句,所以函数默认会返回undefined。这是新手用箭头函数时最容易踩的坑之一!
顺便给你补充个小技巧:如果想简化代码,你可以去掉函数体的{},利用箭头函数的隐式返回特性,这样连return都不用写:
const generatePackageJson = (name) => ` { "name": "${name}" } `;
(另外提个小细节:你生成的JSON里最后一个属性后面多了个逗号,这不符合JSON标准,解析时可能报错,建议去掉哦~)
内容的提问来源于stack exchange,提问作者Ole
相关产品推荐
相关产品推荐

