Member 13539113 Ответов: 1

Javescript основной вопрос о функции


function formatAmount() {
	return "$" + amount.toFixed( 2 );
}

var amount = 99.99;
var kk = 11.11;

amount = formatAmount();
kk = formatAmount(); //TypeError: amount.toFixed is not a function (line 2 in function formatAmount)

console.log(amount); //"$99.99"


Что я уже пробовал:

У меня есть два вопроса:

1.
Почему это нормально назначать функцию formatAmount() к amount но не нормально так поступать kk?

2.
Если я назначу функцию formatAmount() к amount, то значение amount это уже не 99,99, верно? Тогда почему же выход из amount.toFixed( 2 ) в console.log(amount) это все еще 99,99?

1 Ответов

Рейтинг:
10

F-ES Sitecore

function formatAmount() {
	return "$" + amount.toFixed( 2 );
}
 
var amount = 99.99; // amount is 99.99 so is numeric
var kk = 11.11;
 
amount = formatAmount(); // after formatAmount amount is "$99.99" so is string
kk = formatAmount(); // you are now trying to use toFixed on a string which you can't do, it worked before because amount was numeric before 


Вы должны изменить свою функцию formatAmount так, чтобы она принимала значение для форматирования в качестве параметра, а не действовала на глобальную переменную.

function formatAmount(a) {
    return "$" + a.toFixed(2);
}

var amount = 99.99;
var kk = 11.11;

var amountF = formatAmount(amount);
var kkF = formatAmount(kk);

console.log(amountF); 
console.log(kkF);


CPallini

5.