当使用返回值来确定数组中元素的数量时,JavaScript 是否会在其周围添加引号?
示例:
这会统计使用唯一字符的次数。
var uniques = {};
function charFreq(s)
{
for(var i = 0; i < s.length; i++)
{
if(isNaN(uniques[s.charAt(i)])) uniques[s.charAt(i)] = 1;
else uniques[s.charAt(i)] = uniques[s.charAt(i)] + 1;
}
return uniques;
}
console.log(charFreq("ahasdsadhaeytyeyeyehahahdahsdhadhahhhhhhhhhha"));
这似乎很有趣,uniques[s.charAt(i)] 有效,而 uniques[a] 不起作用(由于缺少引号)。 uniques[a] 会给你一个令人讨厌的“a 未定义”。
最佳答案
当您使用[]
表示法访问JavaScript对象时,您正在使用字符串作为对象中的键。您还可以使用 .
表示法来寻址属性:
uniques.a
与 uniques['a']
您没有向 s.charAt(i)
添加引号的原因是它返回一个字符串,然后将其用作要检查的属性uniques
对象。
uniques[a]
将产生错误,因为尚未定义名为 a
的变量。
关于javascript JSON 和 Array 元素,帮助我理解有关引号的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232586/