Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么调用函数时出错?_Javascript - Fatal编程技术网

Javascript 为什么调用函数时出错?

Javascript 为什么调用函数时出错?,javascript,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 a

这是我的职责

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;
}
我得到一个错误,没有定义“a”,但若我可以这样调用函数,它就会工作

transfer(getAccount(),20);

为什么这一个不适用于前一个?

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

transfer('a', 20);
顺便说一句,我添加了一个异常处理

const accounts={a:100,b:0,c:20};
函数getAccount(){
让accountName=提示(“输入帐户名”);
如果(!accounts.hasOwnProperty(accountName)){
抛出新错误(`没有这样的帐户:${accountName}`);
}
返回帐户名;
}
职能转移(来源、金额){
如果(账户[来源]<金额)返回;
试一试{
账户[getAccount()]+=金额;
accounts[from]-=amount;//切换,如果没有帐户,则禁止减法
}捕获(e){
console.log(e.name+':'+e.message);
}
}
转让(“a”,20);

控制台日志(帐户)称之为
转账(accounts.a,20)。您没有名为
a
const a=getAccount()的变量;转让(a,20)??但是getAccount()给出了“a”,为什么我不能在调用函数时直接输入“a”?因为getAccount返回您输入到提示符中的字符串值,这与代码本身中的实际变量名完全不同。在代码中没有变量被称为“a”。
transfer('a', 20);