Promise中then里面加入IIFE为什么console.log会报错?

Promise中then里面加入IIFE为什么console.log会报错?
当Promise中then里面加入自执行函数,并且自执行函数上面有console.log,代码中就会报错,错误消息是TypeError:console.log(...)isnotafunction,菜鸟的我真的不知道问题所在
newPromise((resolve)=>{
setTimeout(()=>{
resolve('Promise01')
},2000)
}).then((value)=>{
console.log(value)
(function(){
console.log('执行')
}())
})
执行的结果是能打印出“Promise01”和“执行”后就报错了,错误消息是TypeError:console.log(...)isnotafunction,如果把console.log(value)注释掉就能正常执行,输出结果是:Promise01、执行。如果把console.log(value)放在自执行函数下面也能正常执行。虽然then里面放IIFE很少见,但是我关注的是为什么会有这个结果?
慕桂英3389331
浏览 336回答 2
2回答

MMMHUHU

console.log(value)(function(){console.log('执行')}())console.log(value)没加分号,编译器把它和后面一条语句合并解释了,等同于console.log(value)(function(){console.log('执行')}())console.log(...)isnotafunction就很明显了

小唯快跑啊

少了分号的原因,会把console.log(value)(function(){console.log('执行')}())解析成一整个去执行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript