Chrome本地打开HTML出现'Uncaught SyntaxError: Unexpected identifier 'Promise'错误排查
错误原因分析
- 你在
setTimeout中写了asyncFunc(),这会立即执行这个async函数,返回一个Promise对象。 setTimeout的第一个参数要求是函数或可执行的字符串代码,当传入非函数值时,会被强制转换为字符串并通过eval执行。这里Promise对象转换后的字符串(如Promise {<resolved>: undefined})不符合JavaScript语法,因此触发Unexpected identifier 'Promise'的语法错误。- 你觉得功能正常,是因为
asyncFunc()被立即执行了,控制台提前输出了日志,而错误是在1秒后setTimeout尝试解析无效字符串时才抛出的。
消除方法
把setTimeout中的函数调用改为传递函数引用:
window.setTimeout(asyncFunc, 1000);
这样setTimeout会在1秒后才调用asyncFunc,既符合延迟执行的需求,也不会传入无效的Promise对象,错误自然消失。
内容的提问来源于stack exchange,提问作者zeb3142
相关产品推荐
相关产品推荐

