在三元运算符中使用count + 1可以吗?

时间:2019-05-22 13:56:51

标签: javascript ternary

我想做的是检查数组中是否有元素,如果有,我想增加计数器。当我进行计数++时,编译器报告错误,但是当我进行计数+1时,编译器报告错误,并且它正确递增。是因为count ++是运算符而不是表达式,而count +1是表达式?

let count = 0;

//not working
count = checkArr(arr) ? count++ : count;

//working
count = checkArr(arr) ? count + 1 : count;

4 个答案:

答案 0 :(得分:3)

使用前缀运算符。这是因为对于后缀,值在其首次读取后会增加。使用前缀,您将在读取之前获取更新的count值。

count = checkArr(arr) ? ++count : count;

应该工作

答案 1 :(得分:3)

没有什么禁止的,但是可以采用一些好的做法。

混合分配count =,调节?:和增加职位++都在同一行之内。

在编写某些东西时总是寻求最简单的解决方案。就您而言:

if (checkArr(arr)) {
  count += 1;
}

比在特定情况下不合适的三元方法更容易理解。


现有的工具审核代码质量,例如sonarqube,eslint ...

他们总是要求简单。

关于三元规则的示例:

有关后/前递增的示例:

他们希望编码人员避免使用++ /-,因为对于某些人来说,这可能会引起误解。许多人不知道++varvar++之间的差异可能导致错误。更喜欢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

友情链接:https://eslint.org/docs/rules/no-plusplus