我想做的是检查数组中是否有元素,如果有,我想增加计数器。当我进行计数++时,编译器报告错误,但是当我进行计数+1时,编译器报告错误,并且它正确递增。是因为count ++是运算符而不是表达式,而count +1是表达式?
let count = 0;
//not working
count = checkArr(arr) ? count++ : count;
//working
count = checkArr(arr) ? count + 1 : count;
答案 0 :(得分:3)
使用前缀运算符。这是因为对于后缀,值在其首次读取后会增加。使用前缀,您将在读取之前获取更新的count
值。
count = checkArr(arr) ? ++count : count;
应该工作
答案 1 :(得分:3)
没有什么禁止的,但是可以采用一些好的做法。
混合分配count =
,调节?:
和增加职位++
都在同一行之内。
在编写某些东西时总是寻求最简单的解决方案。就您而言:
if (checkArr(arr)) {
count += 1;
}
比在特定情况下不合适的三元方法更容易理解。
现有的工具审核代码质量,例如sonarqube,eslint ...
他们总是要求简单。
关于三元规则的示例:
有关后/前递增的示例:
他们希望编码人员避免使用++ /-,因为对于某些人来说,这可能会引起误解。许多人不知道++var
和var++
之间的差异可能导致错误。更喜欢var += 1;
。
答案 2 :(得分:1)
像这样使用三元运算符是合法的。但是我会在这里讨论代码样式。
count = checkArr(arr) ? count + 1 : count;
在此行中,False部分(在:之后)完全没有用,并且不做任何事情,它的存在只是为了使三元运算符语法正确。
对于这种情况,IMO的以下构造更易读:
if (checkArr(arr)) {
++count;
}
或
if (checkArr(arr)) ++count;
答案 3 :(得分:0)
count++
和++count
的值不同。
简而言之:
count = count++
:count++
的值是增量之前的值。
count = ++count
:++count
的值是值 AFTER 增量。
let count = 5;
console.log(count++); //return 5
console.log(count); //return 6
let count = 10;
console.log(++count); //return 11
console.log(count); //return 11
count--
和--count
的工作原理相同
但是,这里要注意的一件事是eslint,这将被视为错误,建议改用+=1
。