Skip to main content

Type Casting and Coercion

Type Coercion (implicit type conversion) happens when a value is being converted to any other types using certain predefined rules

var sum = '1' + 5;
console.log(sum)
console.log(typeof sum)

var minus = '1' - 5;
console.log(minus)
console.log(typeof minus)

var minus = 'one' - 5;
console.log(minus)
console.log(typeof minus)

console.log(0 == false) //true
console.log(1 == true) //true
console.log(undefined == false) //false
console.log(null == false) //false
console.log("" == false) //true
console.log(undefined == null) //true only case otherwise false

const a = {}
const b = {name:'b'}
const c = {name:'c'}
a[b] = 200; //coercion b to string
a[c] = 400; //coercion c to string
console.log(a[b])
console.log(a[c])

Typecasting (explicit type conversion) when we have a value of certain type and we want to convert those values to certain other types.

1. is it True or False?โ€‹

console.log(900.9 === 300.3 * 3)

All numbers are IEEE 754 floating-point numbers.

โ…” => 0.66666667

Since all numbers are binary encoded some decimal numbers cannot be perfectly expressed as a decimal number. So we use repeating numbers and once numbers hit memory delimiter the last digit must be rounded either up or down.

console.log(300.3 * 3) // results 900.9000000000001

1. How to evaluate the above condition?โ€‹

console.log((300.3 * 3).toFixed(2)) // will return a string Or convert this string into a number we can use
console.log(Number((300.3 * 3).toFixed(2))) // 900.9

2โ€‹

console.log((300.3 * 3).toPrecision(12)) // 900.900000000
Or convert this string into a number we can use
console.log(Number((300.3 * 3).toPrecision(12))) // 900.9

3โ€‹

console.log( ((300.3 * 10)*3) /10) // 900.9

4โ€‹

0.1 + 0.2 !== 0.3 is it True or False?
const name1 = "sparsh";
const name2 = "sparsh";

console.log(name1 == name2);
console.log(name1 === name2);

const user1 = {
name: "sparsh",
age: 28,
};
const user2 = {
name: "sparsh",
age: 28,
};

console.log(user1 == user2);
console.log(user1 === user2);