最近看别人的promise源码时,有些代码看的不是特别清楚,希望大牛可以帮下忙。

var ret = typeof onFulfilled === 'function' && onFulfilled(value) || value;

这段代码换ret是怎样的一种赋值方式??希望可以说清楚一下,谢谢哈~

阅读 2.5k
5 个回答
function getRet(value) {
    if(typeof onFulfilled === 'function') {
        var fulfilledValue = onFulfilled(value)
        if(fulfilledValue) {
            return fulfilledValue
        } else {
            return value
        }
    } else {
        return value
    }
}
var ret = getRet(value)

是要问这段代码什么意思吗?
假设把 typeof onFulfilled === 'function' 看成 true,那么表达式变成:
var ret = true && onFulfilled(value) || value
接下来就是一个“与或”的运算,自行 google

js 中 && 前面的值为true(==true)才会继续向后执行, || 前面值为false(==false)才会继续向后执行,具体自己理解吧

如果onFulfilled的数据类型为function,就执行onFulfilled,参数为value,将函数返回的结果赋值给ret,否则将value赋值给ret

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题