变量在 return 语句处转向(中间值),而它在函数内部是正确的
Variable is turning (intermediate value) at return statement while it is corrent inside of the function
我卡在了一个通过执行改变它的值的异步函数上。此函数调用“openlibrary”,从函数参数中获取 isbn 编号。所以调用图书馆成功,fetch
return是一个图书对象。我还在 return
之前打印了那个参数,它仍然是正确的,直到 return 语句..
为什么在 Book
class 构造函数的第二个参数处该值变为 (intermediate value)
?
class Book {
constructor(title, authors, isbn, id) {
this.title = title
this.authors = authors
this.isbn = isbn
this.id = id
}
}
const searchByISBN = async (isbn) => {
const url = `https://openlibrary.org/api/books?bibkeys=ISBN:\
${isbn}&jscmd=details&format=json`
const req = await fetch(url).catch(e => {
// Request failed
console.debug(e)
return null
})
const data = await req.json()
console.dir(data)
// No book with given isbn has been found
if (data[`ISBN:${isbn}`] === undefined)
return false
console.debug(isbn)
return new Book(data[`ISBN:${isbn}`].details.title,
data[`ISBN:${isbn}`].details.authors.map(a => a.name),
isbn, books.length)
}
...
// Inside some async function or browser console
book = await searchByISBN('1234567890')
...
控制台输出:
Object { "ISBN:1234567890": {…}
1234567890
Uncaught (in promise) TypeError: data[("ISBN:" + (intermediate value))].details.authors is undefined
“你好,存在于同一平面的同胞”-雷姆。我认为问题实际上可能出在您正在试用的 ISBN 上!
当我查看 JSON 提供的 link 时:
https://openlibrary.org/api/books?bibkeys=ISBN:1234567890&jscmd=details&format=json 它没有显示任何作者。所以你的代码很可能对为什么在被要求检索作者后没有作者感到困惑
我卡在了一个通过执行改变它的值的异步函数上。此函数调用“openlibrary”,从函数参数中获取 isbn 编号。所以调用图书馆成功,fetch
return是一个图书对象。我还在 return
之前打印了那个参数,它仍然是正确的,直到 return 语句..
为什么在 Book
class 构造函数的第二个参数处该值变为 (intermediate value)
?
class Book {
constructor(title, authors, isbn, id) {
this.title = title
this.authors = authors
this.isbn = isbn
this.id = id
}
}
const searchByISBN = async (isbn) => {
const url = `https://openlibrary.org/api/books?bibkeys=ISBN:\
${isbn}&jscmd=details&format=json`
const req = await fetch(url).catch(e => {
// Request failed
console.debug(e)
return null
})
const data = await req.json()
console.dir(data)
// No book with given isbn has been found
if (data[`ISBN:${isbn}`] === undefined)
return false
console.debug(isbn)
return new Book(data[`ISBN:${isbn}`].details.title,
data[`ISBN:${isbn}`].details.authors.map(a => a.name),
isbn, books.length)
}
...
// Inside some async function or browser console
book = await searchByISBN('1234567890')
...
控制台输出:
Object { "ISBN:1234567890": {…}
1234567890
Uncaught (in promise) TypeError: data[("ISBN:" + (intermediate value))].details.authors is undefined
“你好,存在于同一平面的同胞”-雷姆。我认为问题实际上可能出在您正在试用的 ISBN 上!
当我查看 JSON 提供的 link 时: https://openlibrary.org/api/books?bibkeys=ISBN:1234567890&jscmd=details&format=json 它没有显示任何作者。所以你的代码很可能对为什么在被要求检索作者后没有作者感到困惑