Closed
Description
- Version: v12.2.0
- Platform: Darwin Kernel Version 18.5.0: Mon Mar 11 20:40:32 PDT 2019; root:xnu-4903.251.3~3/RELEASE_X86_64 x86_64
Some object properties cannot be assigned to 0
if they currently have a value of -0
, without being first set to a non-zero value.
const duration = {
years: -0,
months: -0,
weeks: -0,
days: -0,
hours: -0,
minutes: -0,
seconds: -0,
milliseconds: -0
};
Object.keys(duration).forEach(key => {
duration[key] = 0;
});
console.log(duration);
/* ✅ For node v11.11.0, all values on `duration` are logged as positive 0.
* ❌ For node v12.2.0, the logged output is consistently as follows:
* {
* years: 0,
* months: 0,
* weeks: 0,
* days: -0,
* hours: -0,
* minutes: -0,
* seconds: -0,
* milliseconds: -0
* }
*/
// Expected behaviour can be achieved by changing the value to a non-zero value first:
Object.keys(duration).forEach(key => {
duration[key] = 1;
duration[key] = 0;
});
console.log(duration);
// ✅ Correct for both v11.11.0 and v12.2.0