在三元运算符中使用 count + 1 可以吗?
Is it ok to use count + 1 in ternary operator?
我想做的是检查数组中是否有元素,如果有,我想增加计数器。编译器在我执行 count++ 时报告错误,但在我执行 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 部分(在 : 之后)完全没有用,什么也不做,它只是为了使三元运算符语法正确。
对于这种情况,IMO 以下构造更具可读性:
if (checkArr(arr)) {
++count;
}
或
if (checkArr(arr)) ++count;
没有什么是禁止的,但可以采纳一些好的做法。
混合分配 count =
、调节 ?:
和 post 增量 ++
在同一行内有很多。
编写代码时始终寻求最简单的解决方案。在你的情况下:
if (checkArr(arr)) {
count += 1;
}
比在特定上下文中似乎不合适的三元组更容易理解。
现有的审计代码质量的工具,如sonarqube、eslint ...
他们总是要求简单。
关于三元规则的示例:
- https://eslint.org/docs/rules/no-ternary
- https://eslint.org/docs/rules/no-nested-ternary
- https://eslint.org/docs/rules/no-unneeded-ternary
关于post/pre增量的例子:
他们希望编码人员避免使用 ++/-- 因为对于某些人来说它可能会产生误导。很多人不知道 ++var
和 var++
之间的区别,这可能会导致错误。更喜欢 var += 1;
.
count++
和++count
的值不同。
简而言之:
count = count++
: count++
的值是 BEFORE 增量的值。
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
代替。
我想做的是检查数组中是否有元素,如果有,我想增加计数器。编译器在我执行 count++ 时报告错误,但在我执行 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 部分(在 : 之后)完全没有用,什么也不做,它只是为了使三元运算符语法正确。
对于这种情况,IMO 以下构造更具可读性:
if (checkArr(arr)) {
++count;
}
或
if (checkArr(arr)) ++count;
没有什么是禁止的,但可以采纳一些好的做法。
混合分配 count =
、调节 ?:
和 post 增量 ++
在同一行内有很多。
编写代码时始终寻求最简单的解决方案。在你的情况下:
if (checkArr(arr)) {
count += 1;
}
比在特定上下文中似乎不合适的三元组更容易理解。
现有的审计代码质量的工具,如sonarqube、eslint ...
他们总是要求简单。
关于三元规则的示例:
- https://eslint.org/docs/rules/no-ternary
- https://eslint.org/docs/rules/no-nested-ternary
- https://eslint.org/docs/rules/no-unneeded-ternary
关于post/pre增量的例子:
他们希望编码人员避免使用 ++/-- 因为对于某些人来说它可能会产生误导。很多人不知道 ++var
和 var++
之间的区别,这可能会导致错误。更喜欢 var += 1;
.
count++
和++count
的值不同。
简而言之:
count = count++
: count++
的值是 BEFORE 增量的值。
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
代替。