DEV Community

Mirza Mohibul Hasan
Mirza Mohibul Hasan

Posted on

2 1

Why JavaScript's "NaN" Sucks😛

NaN is a global property in JavaScript which represents a value that is "Not a Number". Despite its name, NaN is still considered a numeric data type in JavaScript. If you check the data type of NaN using the typeof operator, you'll find that it returns "number".

console.log(typeof NaN); // number
Enter fullscreen mode Exit fullscreen mode

When comparing NaN using equality operators (== or ===), you may encounter a confusing behavior: NaN is not equal to itself. That means NaN == NaN and NaN === NaN both return false.

console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
Enter fullscreen mode Exit fullscreen mode

If you ever need to compare NaN values, what do you do? 😛
You have two solutions:

  1. Use the isNaN() function.
  2. Use the Number.isNaN() method.

Today, let's learn how to use isNaN(). This function takes a value as an argument. If the value is NaN, it returns true; otherwise, it returns false. You don't need to manually check if a value is NaN. JavaScript handles it automatically. Before performing any automatic conversions, JavaScript tries to convert the value using the Number() constructor function.

console.log(Number(10)); // 10
console.log(Number('Hello')); // NaN
Enter fullscreen mode Exit fullscreen mode

The Number() constructor function tries to convert the argument into a number. If successful, it returns the number; otherwise, it returns NaN.

Now, let's see isNaN() in action:

console.log(isNaN(10)); // false
console.log(isNaN('Hello')); // true
Enter fullscreen mode Exit fullscreen mode

JavaScript can be quite confusing, and one tricky aspect is NaN (Not a Number). Understanding its concept can help you easily solve related problems 😎.

Feel free to run the following examples to better understand:

console.log(Number(10)); // 10
console.log(Number('Hello')); // NaN
console.log(Number('5')); // 5
console.log(Number(NaN)); // NaN
console.log(Number('NaN')); // NaN
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
console.log(Number({})); // NaN
console.log(Number([])); // 0
console.log(Number('123ABC')); // NaN
console.log(Number('')); // 0
console.log(Number(true)) // 1
console.log(Number(false)) // 0
Enter fullscreen mode Exit fullscreen mode

That's it for today! If you have any confusion or questions, feel free to ask in the comments below 😎😎

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay