这是我的功能
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);
为什么这个不起作用?
答案 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);