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);
为什么这个工作不是前一个?
解决方案
您需要一个字符串作为值而不是未定义的变量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);
推荐阅读
- vba - 使用 VBA 与列表匹配的数据验证
- mysql - SQL 使用外键连接两个表
- linux - 远程访问 virtualenv
- vim - 如何绑定一个键以使用vim打开突出显示的文件?
- javascript - ChargeBee Drop-in checkout + React:错误
- python - fetch_mldata:当源服务器关闭时如何手动设置 MNIST 数据集?
- c# - 如何配置 EntityFramework 以使用多个数据库 C#
- spring - 杰克逊:当我序列化列表时如何在分隔符后放置一个空格
- sas - Ods pdf中带有超链接的目录
- mongodb - 将 DirectStream RDD 保存到 Mongodb