В вашем примере вам не нужно сохранять исходное значение параметра. Однако вам может быть проще использовать дополнительные переменные в будущем для более сложных функций.
Вот пример:
// This function uses the parameter "rawNumber" as a variable, but also uses an extra variable "number"
function TestThis(rawNumber, p) {
// Convert the input (string) to integer
// parseInt returns NaN or integer. Truncates decimals
var number = parseInt(rawNumber);
// Check to see if the result is NaN or is an integer
if (isNaN(number)) {
Log(rawNumber + " is not a number.", p); // Log is my imitation of console.log()
}
// will run if number is type int
else {
if (number > 0 && number <= 100) {
Log(rawNumber + " is a valid number.", p);
} else {
Log(rawNumber + " is not between 1 and 100.", p);
}
}
}
Вы можете увидеть этот код работает в этом Fiddle.
В этой функции я использовал дополнительную переменную под названием «число» в трех разных местах. Мне не пришлось, но это было проще, чем печатать isNaN(parseInt(rawNumber))
и if(parseInt(rawNumber) > 0 && parseInt(rawNumber) <= 100)
. Codecademy, вероятно, решили научить вас этому, потому что проще понять, что вы можете упростить свой код, чем осознать, что можете упростить более сложный код с помощью дополнительных переменных.
Кроме того, ответ JK Price вызывает проблему читаемости. Проще говоря, этот код легче читать и понимать:
function Example(number) {
var processedNumber = 5/(Math.log(1/number*3.14 - 7));
console.log("Message: " + (processedNumber * 2));
console.log("Message: " + (processedNumber/10));
}
Этот код может быть немного сложнее:
function Example(number) {
console.log("Message: " + ((5/(Math.log(1/number*3.14 - 7)) * 2));
console.log("Message: " + ((5/(Math.log(1/number*3.14 - 7))/10));
}
Не уверен, что это принадлежит на слабину. FWIW, Вы правы. Однако будущий урок, скорее всего, представит концепцию закрытия. Терпение падавана. :) – Radio
Вы можете, но, возможно, вам нужно исходное значение И производное значение. В этом маленьком примере нет смысла иметь «val». в каком-то другом коде может быть 'val' будет' var val = big_long_ugly_heavy_cpu_intensive_call (number) ', который вы не захотите повторять. –
Ну, продолжая логику, вы можете сэкономить больше места, используя кодировку '6/3' или даже просто' 2' ... – dandavis