用局部变量代替函数中的参数,可以更好地理解函数

时间:2018-09-21 06:39:16

标签: javascript function

选择标题时遇到麻烦。大多数时候,我在学习js并寻找问题的地方,因为它们很简单。是stackoverflow的理想之选,还是您可以推荐另一个地方(IRC或论坛)?

Begann使用js中的函数。这些行给出:

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

我问自己为什么函数需要局部变量“结果”,为什么不能使用该参数:

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

我的猜测是因为该参数是占位符,还是安全乘法和0.08所需的变量?我想我读到参数是变量,对吗?函数中的100也是参数吗?

我想我在这些事情上浪费了很多时间。我的问题是,我很好奇。 谢谢您的宝贵时间。

3 个答案:

答案 0 :(得分:1)

假设amount是一个数字,则这两种方法均有效。也就是说,通常通常认为不必要时重新分配半参数器会有点代码味道-请参见no-param-reassign

在您的原始代码中,amountresult都是局部变量。 (是的,参数也是变量)

当然,声明新变量或重新分配amount的替代方法是立即简单地return计算结果:

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

原语是不变的,因此在函数内部更改amount不会产生任何副作用。如果amount 不是原语,那么您担心更改它。例如,如果它是一个具有value属性的 object ,则如果您在函数内更改了该属性,则传入的对象将被突变。为了说明:

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);

答案 1 :(得分:0)

引入变量的原因是,在许多情况下,您希望函数对参数执行的操作并不像示例中那样简单。例如,另一个函数可能会采用该参数,将其包装在一个对象中,然后以JSON字符串化的形式发送到REST服务,等待该服务器的响应,然后对该服务器进行一些计算,最后返回它。

在您的情况下,我什至主张省略多余的变量创建,因为该函数的作用是如此微不足道。

答案 2 :(得分:0)

很高兴您正在学习JavaScript。有关更简洁的语法(以及您的游戏),请按如下所示使用ES6箭头功能表示法

const calculateTax = (amount) => amount * 0.08;
console.log(calculateTax(100));