为什么在调用函数时出现错误?

时间:2018-07-08 08:37:00

标签: javascript

这是我的功能

const accounts = {
  a: 100,
  b: 0,
  c: 20
};

function getAccount() {
  let accountName = prompt("Enter an account name");
  if (!accounts.hasOwnProperty(accountName)) {
    throw new Error(`No such account: ${accountName}`);
  }
  return accountName;


};
function transfer(from, amount) {
  if (accounts[from] < amount) return;
  accounts[from] -= amount;
  accounts[getAccount()] += amount;
}

如果我尝试调用这样的传递函数

transfer(a,20);

我收到一个未定义“ a”的错误,但是如果我可以通过这种方式调用函数,它就会起作用

transfer(getAccount(),20);

为什么这个不起作用?

1 个答案:

答案 0 :(得分:1)

您需要一个字符串作为值,而不是未定义的变量a

transfer('a', 20);

顺便说一句,我添加了一个异常处理。

const accounts = { a: 100, b: 0, c: 20 };

function getAccount() {
    let accountName = prompt("Enter an account name");
    if (!accounts.hasOwnProperty(accountName)) {
        throw new Error(`No such account: ${accountName}`);
    }
    return accountName;
}

function transfer(from, amount) {
    if (accounts[from] < amount) return;
    try {
        accounts[getAccount()] += amount;
        accounts[from] -= amount;         // switch, prevent subtracting if no account
    } catch(e) {
        console.log(e.name + ': ' + e.message);
    }
}

transfer('a', 20);
console.log(accounts);