JavaScript Double Exclamation Mark Usage


JavaScript

Introduction

JavaScript is a dynamically typed language where bindings (or variables) can hold any type at any point in time or can be changed from one type to another. Within the language, there are different types such as Number, String, Object, and Boolean.

Therefore, if a binding holds a Number type, it can be changed or coerced into another data type like String or Boolean. To make it possible, there are built-in methods that allow us convert binding types such as Number(), Boolean(), String(). Also, JavaScript has a language feature called type coercion.) which automatically converts values from one data type to another.

However, with Boolean, we can cast a binding (or variable) to be a Boolean type explicitly using the !! operator and change it from one data type to a Boolean type. In this article, we will discuss how to use the double exclamation mark (!!) or operator, and how it works.

 

Using double exclamation mark in JS

Within the JavaScript environment, other data type values can be cast to be a Boolean type, and you can see this when we pass values as conditional statements in a if/else statement.

Let’s illustrate by creating some if/else statement.

if ("") {
    console.log("True");
} else {
    console.log("False");
}

if ("121") {
    console.log("True");
} else {
    console.log("False");
}

if (1211) {
    console.log("True");
} else {
    console.log("False");
}

if (0) {
    console.log("True");
} else {
    console.log("False");
}

if ({}) {
    console.log("True");
} else {
    console.log("False");
}
False
True
True
False
True

From the output values, you can see that an empty string (””), zero (0) are coerced to false values and non-empty strings, objects, and numbers other than zero are coerced to true values.

Other than these values, null, undefined and NaN values are coerced to false values. Also, array and date values are coerced to false values.

Knowing this, we might want to explicitly coerce a binding value to be of the Boolean type. To achieve this, we can make use of the double exclamation mark - !!.

const str = !!"345";
console.log(str, typeof str);

const na = !!NaN;
console.log(na, typeof na);

console.log(!!"");

Output

true boolean
false boolean
false

So, the !! operator converts the "345" and NaN values to Boolean data types based on the logic of type (Boolean) coercion

Also, you can achieve this using the Boolean method

const str = Boolean("345");
console.log(str, typeof str);

Output

true boolean

 

Summary

To coerce values of a binding to Boolean type, we can make use of the double exclamation mark and the Boolean method. This allows us to explicitly coerce the data to the Boolean type without relying on the automatic conversion offered by the JavaScript environment.

 

References

Boolean - JavaScript | MDN (mozilla.org)
Type coercion - MDN Web Docs Glossary: Definitions of Web-related terms | MDN (mozilla.org).)

 

Olorunfemi Akinlua

Olorunfemi Akinlua

He is boasting over five years of experience in JavaScript, specializing in technical content writing and UX design. With a keen focus on programming languages, he crafts compelling content and designs user-friendly interfaces to enhance digital experiences across various domains. You can connect with him on his LinkedIn profile.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com

Thank You for your support!!

Leave a Comment