为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2019-04-27 22:14:38
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很少见,但是我关注的是为什么会有这个结果?
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

console.log(value)
(function(){
console.log('执行')
}())
console.log(value)没加分号,编译器把它和后面一条语句合并解释了,等同于
console.log(value)(function(){
console.log('执行')
}())
console.log(...)isnotafunction就很明显了
                            
查看完整回答
反对 回复 2019-04-27
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

少了分号的原因,
会把console.log(value)(function(){
console.log('执行')
}())
解析成一整个去执行
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信