javascript:函数字典用"常量"整数作为键

时间:2014-11-18 04:50:22

标签: javascript dictionary constants function-pointers

以下代码正常运行:

function a() { console.log("a"); };
function b() { console.log("b"); };

var F = {1:a,2:b};

F[1](); // log "a"
F[2](); // log "b"

但这个没有:

function a() { console.log("a"); };
function b() { console.log("b"); };

var A = 1;
var B = 2;
var F = {A:a,B:b};

F[A](); // log "TypeError : F[A] is not a function"

这个想法是A和B是常数整数,仅用于代码可读性。我知道没有" const"在javascript中,但你明白了。

获得类似工作的干净方法是什么? (如果A和B在最后有效地保持不变,我不在乎那么多,只是让它们大写表示我未来不会改变它们的价值)。

3 个答案:

答案 0 :(得分:7)

在ES6中,使用计算属性名称:

{ [A]: a }

答案 1 :(得分:2)

您正在使用AB作为您正在创建的JavaScript对象中的标识符,但它们并未引用您声明的变量。

相反,您必须将它们添加到JavaScript对象中,如下所示:

function a() { console.log("a"); };
function b() { console.log("b"); };

var A = 1;
var B = 2;
var F = {};
F[A] = a;
F[B] = b;

F[A]();

答案 2 :(得分:1)

在对象文字中,所有“键”都被解释为字符串,带或不带引号。因此,您的密钥为"A",而不是1。您的示例等同于var F = { "A": a, "B": b }

不幸的是,您根本无法将变量用于对象文字中的键。

设置变量键的唯一方法是使用括号表示法:

F[A] = a;