关于Prototypal Inheritance的困惑:预期输出'woof'却得到undefined
嘿,老兄!只说预期是woof但实际拿到undefined,还真没法一下子精准定位问题😅 不过我可以给你列几个最常见的坑,你对照自己的代码看看:
大概率踩中的几个问题
函数忘了写返回值
如果你的结果是从某个函数调用得来的,那很可能是函数里只做了操作但没return值。比如:// 错误示例:只打印不返回 function dogSound() { console.log('woof'); } const myResult = dogSound(); // myResult就是undefined // 修正后:加上return function dogSound() { return 'woof'; } const myResult = dogSound(); // myResult就是'woof'啦引用了不存在的属性/变量
要是你是从对象或者某个变量里取woof,可能是你引用的属性名写错了,或者变量压根没被赋值。比如:const dog = { bark: 'woof' }; const myResult = dog.sound; // dog没有sound属性,结果就是undefined异步操作没处理到位
如果涉及到异步代码(比如setTimeout、网络请求),直接拿返回值肯定是undefined,因为异步操作还没完成就返回了。比如:// 错误示例:直接拿异步函数的返回值 function getDogSound() { setTimeout(() => { return 'woof'; }, 100); } const myResult = getDogSound(); // 这里拿到的是undefined // 修正后:用Promise+await处理 async function getDogSound() { return new Promise(resolve => { setTimeout(() => resolve('woof'), 100); }); } const myResult = await getDogSound(); // 这样就能拿到'woof'了
要是你能把相关的代码片段贴出来,我能更快帮你找到具体问题哦!
内容的提问来源于stack exchange,提问作者J Seabolt
相关产品推荐
相关产品推荐

