JavaScript 方括号作为变量值



我需要在下面的函数中使用 [tokenName] 将变量值作为名称传递以进行 CSRF 目的。它在Firefox和Chrome中运行良好,但不能在IE11中运行良好。

我得到的错误是:[tokenName] 行上的预期标识符、字符串或数字

思潮?

$('#container').on('click','#delete',function(e) {
e.preventDefault();
var button = $(this),
form = button.closest('form'),
id = button.attr('data-id'),
verify = button.attr('data-verify'),
tokenName = form.find('input[name=token_name]').val(),
tokenHash = form.find('input[name=' + tokenName + ']').val();
// delete user via ajax
$.post(form.attr('action'), {
"id" : id,
"object" : verify,
[tokenName] : tokenHash
}, function(data) {
// do stuff

}, "json");
});

您始终可以回退到较旧的语法:

var options = {
"id" : id,
"object" : verify,
};
options[tokenName] = tokenHash;
$.post(form.attr('action'), options, function(data) {
//...
});

在 Javascript 对象文字中使用变量作为键是 ES6 的一个特性

[tokenName] : tokenHashIE 11 不支持此功能

单击此处查看各种 js 引擎的 ES 兼容性表

最新更新