Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

180
Views
Why `+0n` throws an error but `-0n` does not?

The following code throws an error in javascript:

console.log(String(+0n))

But this code runs successfully:

console.log(String(-0n))

Why +0n throws an error but -0n does not?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

So that it doesn't break asm.js:

  • Unary + followed by an expression is always either a Number, or results in throwing. For this reason, unfortunately, + on a BigInt needs to throw, rather than being symmetrical with + on Number: Otherwise, previously "type-declared" asm.js code would now be polymorphic.

As Bergi highlights in the comments, this was the least bad of three options:

  1. +BigInt -> BigInt: breaks asm.js, and anything else that made the assumption "unary plus gives a Number";
  2. +BigInt -> Number: conflicts with the design decision to disallow implicit conversions between Number and BigInt; or
  3. +BigInt -> error.
about 4 years ago · Juan Pablo Isaza Report

0

+0n is treated as +(BigInt(0)), since unary + means "cast to integer", and it can't automatically do that (for some reason)

console.log(+(BigInt(0)));

-0n is treated as BigInt(-0), since negative numbers can be big integers

(You need to check your console for this, since I guess there's a bug in the StackSnippets preventing BigInts from being casted to a string in the console.log call)

console.log(BigInt(-0));

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!