Javascript中的自动枚举
我想创建C类型枚举,值自动从0开始。Javascript中的自动枚举,javascript,object,enums,Javascript,Object,Enums,我想创建C类型枚举,值自动从0开始。 以下代码有什么问题 function ArrayToEnum(arr) { var len = arr.lenght; en = {}; for(i=0;i<len;i++) en[arr[i]]=i; return en; } a=['foo','bar']; b=ArrayToEnum(arr); console.debug(b.foo); > Undefined 函数ArrayToEnu
以下代码有什么问题
function ArrayToEnum(arr)
{
var len = arr.lenght;
en = {};
for(i=0;i<len;i++)
en[arr[i]]=i;
return en;
}
a=['foo','bar'];
b=ArrayToEnum(arr);
console.debug(b.foo);
> Undefined
函数ArrayToEnum(arr)
{
var len=平均长度;
en={};
对于(i=0;i未定义)
我希望它打印0,但(至少在Chromium 9.0中)这是未定义的。如果不调用函数,而是直接应用主体,则它可以工作:
var l=a.length;
for(i=0;i<l;i++) b[a[i]]=i;
console.debug(b.foo);
> 0
var l=a.length;
对于(i=0;i=0
函数有什么问题?如果这是您的实际代码,则第三行中的“length”拼写错误为“lenght”:
var len = arr.lenght;
我希望编译它,但它会将len
设置为undefined
,这将阻止循环体执行。这将导致arr.foo
a.k.a.arr[“foo”]
成为undefined
,正如您在输出中看到的那样
另外,当前一行中的数组被调用为a
,而不是arr
时,您正在将“arr”
传递到ArrayToEnum()
这里的共同主题是,当您开始谈论一个尚未定义的变量时,JavaScript“有益地”定义了它,而不是告诉您它还不存在
我在Chrome JS控制台中尝试了它,我得到了“参考错误”,直到我修复了“a”/“arr”问题。修复后,我得到了您描述的“未定义”
当我修正了“lenght”时,答对了,它会打印“0”。如果这是您的实际代码,“length”在第三行被拼错为“lenght”:
var len = arr.lenght;
我希望编译它,但它会将len
设置为undefined
,这将阻止循环体执行。这将导致arr.foo
a.k.a.arr[“foo”]
成为undefined
,正如您在输出中看到的那样
另外,当前一行中的数组被调用为a
,而不是arr
时,您正在将“arr”
传递到ArrayToEnum()
这里的共同主题是,当您开始谈论一个尚未定义的变量时,JavaScript“有益地”定义了它,而不是告诉您它还不存在
我在Chrome JS控制台中尝试了它,我得到了“参考错误”,直到我修复了“a”/“arr”问题。修复后,我得到了您描述的“未定义”
当我修正了“lenght”时,答对了,它会打印“0”。你在代码的第三行拼写错误了
length
。这个错误也存在于你的实际代码中吗?还有-这有什么意义?你在代码的第三行拼写错误了length
。这个错误也存在于你的实际代码中吗?还有-这有什么意义?“a”/“arr”是复制/粘贴错误,在源代码中是正确的,但该死的我拼错了长度。谢谢。“a”/“arr”是复制/粘贴错误,在源代码中是正确的,但该死的我拼错了长度。谢谢。