字符串变量值作为IE11上的对象键错误

Laj*_*pad 3 javascript internet-explorer-11

我在IE11下的页面上遇到了问题,它在那里崩溃了一个页面.有问题的代码本质上从服务器动态获取一个String,用它初始化一个变量,然后将它用作对象键.为了使问题易于理解,我写了一个小脚本:

var bar = "b";
var foo = {[bar]: "Orson oson a borsos borsós fosos koros boros korsón"};
Run Code Online (Sandbox Code Playgroud)

这适用于Chrome,FireFox和Microsoft Edge,但在IE11下,我收到以下错误:

预期的标识符,字符串或数字

为什么IE11不允许这样做,我应该如何解决这个问题呢?

Jar*_*a X 7

IE11已经过时了,不支持这种语法...... ES2015 +中的语法变化并不总是很容易在旧的浏览器中实现 - 尽管你可以做到这一点

var bar = "b";
var foo = {};
foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón";
Run Code Online (Sandbox Code Playgroud)

然而,使用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);
Run Code Online (Sandbox Code Playgroud)

或(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");
Run Code Online (Sandbox Code Playgroud)

此语法称为Computed属性名称