为什么不替换参数值?

Why doesn't parameter value get replaced?

我有这段代码

function(memo, value, key) {
    if (!!value) {
      memo.push({
        'property': 'loopbackFilter',
        'value': {
          key : {
            'like' : '%' + value + '%'
          }
        }
      });
    }
    return memo;
  }

Sublime Text 说 "key" 参数没有被使用,实际上生成的 JSON 对象是

"where": {
  "key": { <--- key is literally "key"
    "like": "%value%" (VALUE is an actual value, so it works here)
  }
}

为什么会这样?

JS 对象文字与 JSON 对象不同:在 JavaScript 中你不需要引用 属性 名称:

var obj = { foo: "bar" }

对于 computed property names 使用括号语法:

[key] : {
  'like' : '%' + value + '%'
}

另请注意,这是 ES6 的功能。