JS newb:我的函数什么都不做

时间:2018-04-01 02:41:23

标签: javascript function

你知道如何让它发挥作用吗?

const TAX_RATE = 0.08;

var purchase_amount = 10;

function addTax(amt) {
  amt += amt * TAX_RATE;
}

addTax( purchase_amount );

console.log( purchase_amount );

4 个答案:

答案 0 :(得分:1)

amt功能中重新分配addTax并不会影响其中的任何内容,因此您需要返回新值,并在呼叫时将其分配给purchase_amount功能。



const TAX_RATE = 0.08;
let purchase_amount = 10;
function addTax(amt) {
  return amt + amt * TAX_RATE;
}
purchase_amount = addTax( purchase_amount );
console.log( purchase_amount );




答案 1 :(得分:1)

从函数返回值。amt成为函数内的局部变量



const TAX_RATE = 0.08;

var purchase_amount = 10;

function addTax(amt) {
  amt += amt * TAX_RATE;
  return amt;
}

var newAmt = addTax(purchase_amount);

console.log(newAmt);




答案 2 :(得分:1)

Javascript不通过引用传递参数,因此您必须从函数返回所需的值,或将对象引用作为值传递给函数。检查Pass Variables by Reference in Javascript

答案 3 :(得分:1)

虽然其他答案是正确的,但JavaScript是按值传递,而不是按引用传递这对于对象并非如此>

我不确定为什么 JavaScript会这样做(其他人可能能够更好地解释确切的推理)但是当你将一个对象传递给一个函数时,原始对象会被修改功能。

因此,如果您这样做,这将无需设置任何外部值即可。在使用自定义类对象的情况下,这将特别有用。

function addTax( obj ) {
    if ( typeof obj['tax_rate'] == "undefined" ) return;
    
    obj['cost'] = obj['cost'] + ( obj['cost'] * obj['tax_rate'] );
    delete obj['tax_rate'];
}

var myTaxObject = {
    cost: 10,
    tax_rate: 0.08
}

addTax( myTaxObject );

console.log( myTaxObject );

深思熟虑。