I’d add that the signed zero in JavaScript is just a consequence of the language using the IEEE-754 floating-point representation for all numbers, even integers. Floating-point numbers have a designated sign bit so you can have positive zero (value=0, bit not set) and negative zero (value=0, bit set). See Floating-point arithmetic > Internal representation.
This is a bit unusual and different from most other programming languages, including Solidity, where integers are a separate type. For signed integers negative numbers are represented using 2’s complement and there’s exactly one zero value,