I'm wondering what happens behind the scenes when we either add, subtract or multiply two strings of numbers. Here is an example:
let strNum1 = "300";
let strNum2 = "22";
let multiply = function(num1, num2) {
let product = num1 * num2;
return `${product}`
};
multiply(strNum1, strNum2); //this will return ==> "6600"
Does the JS engine turns these into integers first and then performs the operations or does it know "magically" that they are numbers even though it's in a string form? The reason I'm asking is because of the long multiplication algorithm. For numbers bigger than 8 chars it becomes funky when multiplying with the operator vs using the algorithm.
This is a leetcode question btw.
CodePudding user response:
You can parse your values before and after operation:
let multiply = function(num1 = '', num2 = '') {
const product = Number(num1) * Number(num2);
return `${product}` // Or String(product)
};
CodePudding user response:
To answer your question: The JS Engine turns those strings into integers before doing the arithmetic operation. It is called Implicit coercion
.
You can read more about that in this You Don't Know JS Chapter.