在查找字符串中字符出现的频率时,此语法的确切含义是什么?
var str = 'abcccdddd';
function maxCharCount(target) {
const chars = {};
let maxChar = '';
let maxValue = 1;
for (let char of target) {
chars[char] = chars[char] + 1 || 1; //what is the meaning of this line exactly in detail???
}
return chars;
}
console.log(maxCharCount(str));
最佳答案
字符[字符] + 1 || 1
有两个边:左边和右边。如果左侧解析为假值,则整个表达式解析到右侧,如果左侧解析为真值,则表达式解析到左侧。
也就是说,左侧只能在一种情况下为假:当 chars[char]
为 undefined
时(当 chars
没有包含名称为 char
的属性)。 undefined + 1
给出 NaN
即不是数字,这是一个虚假值。
像这样的代码绝对应该被认为是糟糕的,因为它使开发人员的意图不明显。相反,至少应该首选这样的东西:
chars[char] = chars[char] ? chars[char] + 1 : 1;
关于javascript - 在查找字符串中字符出现的频率时,此语法的确切含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53957788/