Локальная переменная вместо параметра в функции, лучшее понимание функций - PullRequest
0 голосов
/ 21 сентября 2018

Были проблемы с выбором названия.Я учу js и ищу место, чтобы задавать вопросы, в большинстве случаев они просты.Является ли stackoverflow хорошим местом для этого или вы можете порекомендовать другое место (irc или forum)?

Начал работать с функциями в js.Даны следующие строки:

function calculateTax(amount){
  let result = amount * 0.08;
  return result;
  }
  let tax = calculateTax(100);
  console.log(tax);

Я спрашиваю себя, зачем функции нужна локальная переменная «result», почему нельзя использовать параметр:

function calculateTax(amount){
  amount * 0.08;
  return amount;
  }
  let tax = calculateTax(100);
  console.log(tax);

Я предполагаю, что параметр является заполнителем или является переменной, необходимой для безопасного умножения и 0,08?Я думаю, что я прочитал, что параметры являются переменными, это правильно?Является ли значение 100 в функции параметром?

Я думаю, что я трачу много времени на такие вещи.Моя проблема в том, что мне любопытно.Спасибо за ваше время.

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Причина введения переменной в том, что во многих случаях функция, которую вы хотите сделать с параметром, не так проста, как в вашем примере.Например, другая функция может взять параметр, отправить его в виде объекта, преобразованного в формат JSON, в службу REST, дождаться ответа от этого сервера, выполнить некоторые вычисления и, в конце концов, вернуть его.

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

0 голосов
/ 21 сентября 2018

Рад, что вы изучаете JavaScript.Для более краткого синтаксиса (и вашей игры) используйте обозначение функции стрелки ES6 следующим образом:

const calculateTax = (amount) => amount * 0.08;
console.log(calculateTax(100));
0 голосов
/ 21 сентября 2018

Если предположить, что amount - это число, то любой из методов работает.Тем не менее, переназначение паранетера, когда в этом нет необходимости, обычно считается кодовым запахом - см. no-param-reassign .

В исходном коде amount и result являются локальными переменными.(да, параметры тоже переменные)

Конечно, альтернатива объявлению новой переменной или переназначению amount состоит в простом return результате вычисления немедленно:

function calculateTax(amount) {
  return amount * 0.08;
}
let tax = calculateTax(100);
console.log(tax);

Примитивы неизменны, поэтому изменение amount внутри функции не вызовет никаких побочных эффектов.Если amount не был примитивом, то вам придется беспокоиться о его изменении.Например, если это был объект со свойством value, то если вы изменили это свойство внутри функции, переданный объект будет видоизменяться.Для иллюстрации:

function calculateTax(obj) {
  obj.amount *= 0.08;
  return obj.amount;
}

const item = { amount: 100 };
let tax = calculateTax(item);
console.log(tax);

// item was mutated inside the function:
console.log(item);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...