r = +_;
+
пытается отличить любое число _
от числа. _
- это только имя переменной (а не оператор), это может быть a
, foo
и т. д. Пример:
+"1"
отличить «1» до чистого номера 1.
var _ = "1";
var r = +_;
r
теперь 1
, а не "1"
.
Кроме того, согласно странице MDN по арифметическим операторам :
Унарный плюс оператор предшествует своему операнду и оценивает его операнд, но пытается преобразовать его в число, если оно еще не было. [...] Он может преобразовывать строковые представления целых чисел и чисел с плавающей точкой, а также нестроковые значения
blockquote>true
,false
иnull
. Поддерживаются целые числа в десятичных и шестнадцатеричных форматах ("0x"
-prefixed). Отрицательные числа поддерживаются (хотя и не для hex). Если он не может разобрать конкретное значение, он будет оценивать значениеNaN
.Также отмечается, что
унарный плюс является самым быстрым и предпочтительным способом преобразования чего-то в число
blockquote>
Вы можете использовать метод форматирования JS следующим образом:
const amount = 10000;
const options2 = { style: 'currency', currency: 'USD' };
const numberFormat2 = new Intl.NumberFormat('en-US', options2);
console.log(numberFormat2.format(amount));
// expected output: "$10,000"
Вот мое руководство по обновлению, вы объявляете только 2 переменные в глобальном
const options2 = { style: 'currency', currency: 'USD', minimumFractionDigits: 0 };
const numberFormat2 = new Intl.NumberFormat('en-US', options2);
и заменяете значение `return '$' + этим:
return numberFormat2.format(value.toFixed(0).replace(/\.0+$/, ""));