我在IE11下的页面上遇到了问题,这会在那里崩溃一个页面。有问题的代码本质上从服务器动态获取一个String,用它初始化一个变量,然后将它用作对象键。为了使问题易于理解,我写了一个小脚本:
var bar = "b";
var foo = {[bar]: "Orson oson a borsos borsós fosos koros boros korsón"};
这适用于Chrome,FireFox和Microsoft Edge,但在IE11下,我收到以下错误:
预期的标识符,字符串或数字
为什么IE11不允许这样做,我该如何解决?
答案 0 :(得分:6)
IE11已经过时了,并不支持这种语法...... ES2015 +中的语法变化并不总是很容易在旧的浏览器中实现 - 尽管你可以这样做
var bar = "b";
var foo = {};
foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón";
然而,使用babel,代码转换为(ES2015-loose preset)
var _foo;
var bar = "b";
var foo = (_foo = {}, _foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón", _foo);
或(ES2015预设)
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var bar = "b";
var foo = _defineProperty({}, bar, "Orson oson a borsos borsós fosos koros boros korsón");