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就很明显了
添加回答
举报
0/150
提交
取消