【发布时间】:2020-06-07 18:34:37
【问题描述】:
我开始学习异步 javascript,虽然我确实了解回调和承诺,但我正在学习的代码的一些内容引起了我的注意。例如:
function funcA(){
console.log('World')
}
function funcB() {
return new Promise((resolve, reject) => {
console.log('Hello')
const error = false
!error ? resolve() : reject('Error')
})
}
funcB()
.then(funcA)
.catch(err => console.log(err))
在这种情况下,!error 不是说 if(error === true) 然后解决它,else (error ===假),拒绝()?
或者简单地说“如果没有错误,那就解决”?
【问题讨论】:
-
三元运算符最好用作表达式(作为函数、赋值等的参数)。在这种情况下,普通的
if .. else就足够了。 -
这不是回调或承诺的问题。正如@Tibebes.M 所说,本质上是 if (error) { reject() } else { resolve() }
-
我是在上完关于 promise 的课程后自己编写的代码,所以在这种情况下,我不应该使用三元运算符吗?我以为我会用它只是为了节省空间 =) 关于代码,我想我被 (not) 运算符弄糊涂了,我相信它会改变错误的值,而不只是说“如果没有错误,然后解决”。在我的脑海中,not 运算符总是将语句从 true 更改为 false(反之亦然)。
-
@JoãoGabrielOnofre
!error ? resolve() : reject('Error')等同于error ? reject('Error') : resolve()。是的,if语句会更简洁,如果它降低了代码的可读性,那么节省空间并不是一个好理由。
标签: javascript conditional-operator not-operator