【发布时间】:2018-02-12 12:51:48
【问题描述】:
我有一个简单的代码
async function foo() {
const b = bar()
return 2 + b
}
async function bar() {
return 2
}
(async() => {
console.log(typeof foo())
})()
它记录object。不是NaN。 number + object -> object 是怎么发生的?
根据我对+ 规范的记忆,如果其中一个操作数是基元,第二个是对象,则应将对象转换为基元。在这种情况下使用.valueOf() 方法
【问题讨论】:
-
它将两个值连接为“2[object Promise]”。只需省略类型
-
foo是一个async function,调用它 (foo()) 将返回一个显然是一个对象的承诺。 -
想想“事物的类型”与“事物返回的类型”,在这种情况下你会得到第一个。无论您是在卡车上拖啤酒或水果,还是只是步行,道路仍然是一条道路。
标签: javascript promise type-conversion