请解释一下javascript函数代码行的逻辑



你能解释一下字母[通过[i]] = (字母[通过[i]] || 0) + 1的工作原理吗?

此行将pass的字母作为键添加到letters对象中,并且它在值中出现的数量。

因此,例如,对于pass = "aabbc",您将letters等于

{
"a":2,
"b":2,
"c":1
}

右边的运算符((letters[pass[i]] || 0) + 1)可以分为两个:letters[pass[i]] || 0检查letters是否有值pass[i]键,如果是这样,表达式将具有它的值,如果没有,那么我们将在||后获得值 - 在本例中0。对于此表达式的值,我们始终添加1.

此外,我们可以将这一行转换为如下所示的内容:

if(letters[pass[i]]) {
letters[pass[i]]++;
} else {
letters[pass[i]] = 1;
}

关于值赋值中的||运算符,您可以在此处阅读更多内容

让我们像JavaScript一样从内到外开始。

(letters[pass[i]] || 0) + 1

那:

  • pass[i]开头,从pass获取索引i的字母(它似乎是一个字符串)
  • 然后尝试从letters(letters[pass[i]]) 获取具有该名称的属性的值。它将获得一个放在它之前的数字,或者,如果该字母(尚)没有属性,它将获得值undefined
  • 它将该值(数字或未定义)与(the value) || 0一起使用。||运算符在 JavaScript 中工作得相当特别:它评估其左侧操作数,如果该值为,则将该值作为其结果;否则,它将计算其右侧操作数,并将该值作为其结果。undefined是一个虚假值,所以undefined || 00。这是为了处理第一次看到字母。
  • 它增加了1||获得的结果。

基本上,这是在letters上字母的属性值中添加一个,允许以前从未通过||看到过该字母。

然后,它将结果存储回属性。

相关内容

  • 没有找到相关文章

最新更新