JS代码跨浏览器及移动端运行异常,报Syntax error unexpected token '>'
问题排查与修复方案
嘿,这个报错Syntax error unexpected token '>'我太熟悉了——根源是你代码里用了ES6箭头函数,而部分旧浏览器(比如IE全系列,还有一些版本偏老的移动端浏览器)根本不支持这种语法特性,所以才会抛出语法错误。
具体问题点
你代码里的这两处箭头函数是罪魁祸首:
.then(response => response.json()) // 还有这里 .then(json => { /* ... */ })
箭头函数是ES6(ECMAScript 2015)才引入的新语法,旧环境没有实现它,浏览器在解析时看到=>就会认为是非法字符,直接报错。
修复后的代码
把箭头函数全部替换成传统的function写法,就能兼容所有主流浏览器(包括旧版本)了:
function req1() { fetch('https://jsonplaceholder.typicode.com/posts/1') .then(function(response) { return response.json(); }) .then(function(json) { var title = json.title; var body = json.body; document.getElementById("newsTitle").innerHTML = title; document.getElementById("newsContent").innerHTML = body; document.getElementById("newsContent2").innerHTML = body; }); } req1();
额外建议
如果之后你还想使用更多ES6+的新特性(比如let/const、解构赋值等)同时保证兼容性,可以考虑用Babel这类转译工具,把现代JS代码转译成ES5兼容的版本,这样就能在各种旧环境里顺畅运行啦。
内容的提问来源于stack exchange,提问作者Crashy




