选择标题时遇到麻烦。大多数时候,我在学习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也是参数吗?
我想我在这些事情上浪费了很多时间。我的问题是,我很好奇。 谢谢您的宝贵时间。
答案 0 :(得分:1)
假设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
属性的 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));