Типизация Javascript имеет странное поведение при изменении порядка операндов - PullRequest
0 голосов
/ 06 ноября 2019

Я только что написал некоторый код 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

...