This is not one operator, it is three: +and then !twice.
What this does is apply !to arguments[i], which leads to true values falseor falsehoods before true, and then applies !to create false=> trueand vice versa, and then applies unary +to convert the result to a number ( true=> 1, false=> 0).
- , false. : 0, "", NaN, null, undefined , , false. - .
, arguments value.
JavaScript?
!!, - true, - false - . + - .