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

Javascript IE11上的字符串变量值作为对象键错误,javascript,internet-explorer-11,Javascript,Internet Explorer 11,我在IE11下的一个页面上遇到了一个问题,导致那里的页面崩溃。有问题的代码本质上是从服务器动态获取字符串,用该字符串初始化变量,然后将其用作对象键。为了使问题易于理解,我写了一个小脚本: var bar = "b"; var foo = {[bar]: "Orson oson a borsos borsós fosos koros boros korsón"}; 这在Chrome、FireFox和Microsoft Edge下同样有效,但在IE11下,我得到以下错误: 应为标识符、字符串或数字

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

var bar = "b";
var foo = {[bar]: "Orson oson a borsos borsós fosos koros boros korsón"};
这在Chrome、FireFox和Microsoft Edge下同样有效,但在IE11下,我得到以下错误:

应为标识符、字符串或数字


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

IE11很旧,不支持这种语法。。。ES2015+中的语法更改并不总是很容易在陈旧的浏览器中实现——尽管有了它,您也可以做到

var bar = "b";
var foo = {};
foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón";
但是,使用babel,代码转换为(ES2015松散预设)

或(ES2015预设)


此语法称为

可能代码与ES6或ES7相关。试试
var bar=“b”,foo={};foo[bar]=“Orson oson a borsos borsós fosos koros boros korsón”
@Mr_Green,这是可行的,但我想知道我的代码抛出错误的原因。IE11支持
ES5
,但不支持像
ES6
ES7
这样的新版本。在
ES5
中,不能在对象的键中放置变量。因此,出现了错误。也许我不明白你想做什么,但为什么不只做
key=String([bar])
,然后使用key?@Ness,这不会有语法错误,但是如果你使用console.log(foo);您将看到它有一个名为key的成员,它不应该在那里,也没有一个名为b的成员,它应该在那里。
var _foo;

var bar = "b";
var foo = (_foo = {}, _foo[bar] = "Orson oson a borsos borsós fosos koros boros korsón", _foo);
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");