为何JavaScript空行报Uncaught SyntaxError: Unexpected end of input错误
报错原因及解决方案
你遇到的Uncaught SyntaxError: Unexpected end of input报错和空行没有关联,是代码存在未闭合的语法结构导致的。
具体错误点
你提供的代码中,playAudio函数内的for循环只写了左大括号{,缺少对应的右大括号}闭合,是语法错误的来源:
// 错误代码片段 function playAudio(){ for (i = 0; i < 5; i++){ // for循环左大括号 audio.play(); audio.loop = true; audio.playbackRate = 2; // 此处漏写了for循环的右大括号 } }
修正后的完整代码
const playBtn = document.querySelector('.play') const audio = new Audio('/sounds/1M.mp4') function playAudio(){ for (i = 0; i < 5; i++){ audio.play(); audio.loop = true; audio.playbackRate = 2; } // 补充for循环的闭合大括号 } playBtn.addEventListener('click', ()=> { playAudio() })
报错指向空行的原因
JavaScript解析器会逐行扫描验证语法结构,当它扫描到整个文件的末尾,都没有找到和for循环左大括号匹配的闭合符号,就会将报错位置标记在文件的最后一行,也就是你看到的空行位置,空行只是刚好处于文件末尾,本身没有语法错误。
同类报错的常见触发场景
- 函数、循环、条件判断的大括号没有成对书写,漏写右大括号
} - 小括号
()、中括号[]不配对,漏写右侧闭合符号 - 字符串漏写结尾的单引号、双引号或反引号
- 对象、数组字面量漏写闭合符号
内容的提问来源于stack exchange,提问作者Jongkeun Choi
相关产品推荐
相关产品推荐

