Javascript 可以使用count+;三元运算符中的1?

Javascript 可以使用count+;三元运算符中的1?,javascript,ternary,Javascript,Ternary,我想做的是检查数组中是否有元素,若有,我想递增计数器。当我进行计数++时,编译器会报告错误,但当我进行计数+1时,编译器不会报告错误,并且它会正确递增。是因为count++是操作而不是表达式,而count+1是表达式吗 let count = 0; //not working count = checkArr(arr) ? count++ : count; //working count = checkArr(arr) ? count + 1 : count; 使用前缀运算符。这是因为使

我想做的是检查数组中是否有元素,若有,我想递增计数器。当我进行计数++时,编译器会报告错误,但当我进行计数+1时,编译器不会报告错误,并且它会正确递增。是因为count++是操作而不是表达式,而count+1是表达式吗

let count = 0;

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

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


使用前缀运算符。这是因为使用后缀,值在第一次读取后递增。在读取前缀之前,您将得到更新的
count

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

应该可以用

像这样使用三元运算符是合法的。然而,我会在这里讨论代码风格

count = checkArr(arr) ? count + 1 : count;
在这一行中,expressionFalse部分(在:)是完全无用的,它不做任何事情,只是为了使三元运算符语法正确

对于这种情况,以下结构更具可读性:

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


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

将赋值
count=
、条件作用
?:
和后增量
++
混为一谈是同一行中的一大部分

在编写代码时,请始终使用最简单的解决方案。就你而言:

if (checkArr(arr)) {
  count += 1;
}
是一种比三元结构更容易理解的方法,而三元结构在那个特定的上下文中似乎并不合适


现有的审计代码质量的工具有sonarqube、eslint

他们总是要求简单

关于三元规则的示例:

增量后/增量前示例:


他们希望程序员避免使用++/--因为对某些人来说,这可能会产生误导。很多人不知道
++var
var++
之间的区别,这可能导致错误。首选
var+=1

计数+++和计数+的值不同

简言之:

count=count++
:count++的值是增量之前的值

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
++count
的值是增量后的值

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
这对
计数--
计数--

但是,这里需要注意的一点是,在eslint中,这将被视为错误,建议使用
+=1


链接仅供参考:

如果它有效,我不明白为什么不能使用:pPostfix
++
首先返回一个旧值,然后增加值本身。如果您将其更改为前缀1(例如
++count
),它将起作用。然而,没有必要在三元运算符中使用modufy count,因为将其作为结果赋值是可行的,但这是一个非常奇怪的构造。首先递增变量,然后用相同的值覆盖它。如果没有三元模型,情况会好得多。