Javascript 为什么这个三元运算符不工作?(详见下文)
我有一个函数,它可以与if/else配合使用,但不能与三元配合使用。有人知道原因吗? 另外,如果有人能告诉我一种让它看起来更好的方法,我会非常感激Javascript 为什么这个三元运算符不工作?(详见下文),javascript,html,dom,Javascript,Html,Dom,我有一个函数,它可以与if/else配合使用,但不能与三元配合使用。有人知道原因吗? 另外,如果有人能告诉我一种让它看起来更好的方法,我会非常感激 function print(){ for (const book of myLibrary){ let cover = document.createElement('div') cover.textContent =`title: ${book.title}
function print(){
for (const book of myLibrary){
let cover = document.createElement('div')
cover.textContent =`title: ${book.title}
author: ${book.author}
pages: ${book.pages}`
// this line: (book.finished) ? cover.classList.add('bookStyle') : cover.classList.add('bookStyle2');
if (book.finished){
cover.classList.add('bookStyle')
}
else{
cover.classList.add('bookStyle2')
}
books.appendChild(cover)
}
}
当三元组用于返回值,而不是执行或调用操作时,它们非常有用 以下是我将如何改进您的三元结构
// Old
this line: (book.finished) ? cover.classList.add('bookStyle') : cover.classList.add('bookStyle2');
// Prefered
cover.classList.add(book.finished ? 'bookStyle' : 'bookStyle2');
“如果有人能告诉我一种让它看起来更漂亮的方法”,我会从不用三元组开始。它通常用于根据条件返回值。您没有对返回值执行任何操作。在我看来,这只会使事情更难阅读。。您的
(book.finished)
被解释为您试图在其前面的模板文本上调用一个函数。@Ivar如果三元组看起来像cover.classList.add(book.finished?“bookStyle”:“bookStyle2”)
。请参阅。这可能会起作用((book.finished?)cover.classList.add('bookStyle')):cover.classList.add('bookStyle2'))