ES6箭头函数在IE浏览器中失效的修复方案咨询
修复IE中ES6箭头函数不兼容的问题
兄弟,你遇到的问题根源很明确:Internet Explorer完全不支持ES6的箭头函数(() => ...)语法,你的代码里正好用了这种写法,IE的JS引擎没法解析,自然就报错了。下面给你两种解决方案,从手动修改到自动化处理都有:
一、手动把箭头函数转换成ES5兼容写法
直接把你的箭头函数替换成传统的function()表达式就行,注意要加上return语句(箭头函数会自动返回单行表达式的结果,但普通函数需要显式写return)。
你原来的代码:
extraLetterGenerator = () => lettersToAdd.pop() || (fillingBlanksCount++ && ''); extraLetterGenerator = () => LETTERS[Math.floor(Math.random() * LETTERS.length)]; var extraLettersCount = this.fillBlanks({puzzle, extraLetterGenerator: extraLetterGenerator});
修改后兼容IE的版本:
extraLetterGenerator = function() { return lettersToAdd.pop() || (fillingBlanksCount++ && ''); }; extraLetterGenerator = function() { return LETTERS[Math.floor(Math.random() * LETTERS.length)]; }; var extraLettersCount = this.fillBlanks({puzzle: puzzle, extraLetterGenerator: extraLetterGenerator});
额外提醒:如果你的代码里还有其他ES6特性(比如
let/const、模板字符串、解构赋值等),也要一并转换成ES5写法,比如把let/const换成var,解构赋值改成传统的属性访问。
二、用自动化工具批量转译ES6到ES5
如果你的项目里还有大量ES6代码,手动改太麻烦,推荐用Babel来自动转译:
- 安装Babel相关依赖(
@babel/core、@babel/preset-env等) - 配置
.babelrc,指定目标浏览器包含IE - 用Babel命令或者构建工具(Webpack、Gulp等)把你的JS代码转成ES5兼容版本
这样能一次性解决所有ES6语法的兼容问题,比手动修改高效得多。
内容的提问来源于stack exchange,提问作者user2672769
相关产品推荐
相关产品推荐

