Я только что написал некоторый код javascript и заметил очень странное поведение при выполнении простых арифметических операций.
Рассмотрим следующий код:
let anyNumber = 10;
anyNumber = anyNumber + (12.512).toFixed(2); // toFixed() returns a String
console.log(anyNumber); // it will output 1012.512
// By changing the Order of the operands, there is no difference in operation and it basically concatenates both as a string.
let anotherNumber = 10;
anotherNumber = (12.512).toFixed(2) + anotherNumber;
console.log(anotherNumber); // output 12.5110
Блок кода выведет 1012.512
как строка, потому что понятно, что один из операндов был строкой. Но мы немного изменим ситуацию, как указано ниже:
console.log((12.512).toFixed(2) + 10); // it will output 22.51
// Also if we change the order here, the output is very different.
console.log(10 + (12.512).toFixed(2)); // It will output 1012.51
Вопрос в том, что если мы изменим порядок операндов в выражении, он обнаружит изменение и будет вести себя совсем иначе, но в случае переменных,в любом случае он не дифференцируется, хотя тип переменной anyNumber
по-прежнему равен number