仅IE浏览器提示‘Expected identifier’错误,代码排查求助
解决IE中"Expected identifier"错误的方案
嘿,我来帮你搞定这个IE专属的报错问题!
问题根源
Internet Explorer(尤其是IE11及更早版本)完全不支持ES6的对象解构赋值语法,你代码里的这一行就是报错的核心:
let {url,mobile2} = profile.val();
另外,IE11也不支持ES6里的对象字面量简写(也就是{url,mobile2}这种写法),这也是潜在的兼容隐患。
修改后的兼容代码
把ES6语法换成IE支持的ES5写法就可以解决问题了:
var ref = firebase.database().ref("products"); ref.once("value", function(snapshot) { var profiles2 = []; snapshot.forEach(function(profile) { // 替换解构赋值,手动获取属性 var profileData = profile.val(); var url = profileData.url; var mobile2 = profileData.mobile2; // 用完整的键值对形式创建对象,替代ES6简写 profiles2.push({url: url, mobile2: mobile2}); }); });
额外建议
如果你的项目有使用构建工具(比如Webpack、Rollup),可以配置Babel来自动将ES6代码转译为ES5,这样你就能继续写顺手的ES6语法,同时自动兼容IE这类旧浏览器,不用每次手动改代码。
内容的提问来源于stack exchange,提问作者Alejandro Castro
相关产品推荐
相关产品推荐

