gpt4 book ai didi

javascript - javascript 中的 If/else 不返回未定义的 else

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:58 24 4
gpt4 key购买 nike

我 3 周前才开始学习 JS,所以我可能会忽略一些简单的东西。我正在尝试使用 npm 模块周期表和 facebook-chat-api 制作一个 Facebook 化学机器人(荷兰语)。除了获取摩尔重量外,每个基于元素周期表的函数都运行良好。如果我输入不是分子的东西,它不会转到 else 语句,而对于我的所有其他情况,这确实会发生。是这样的:

case 'mw':

var regex = /((Uu[a-z]|[A-Z][a-z]?)\d*)/g;
var mol = (commandText.match(regex) || []).join(' ');

if(util.atomicMass != undefined && util.atomicMass(mol) != undefined) {
api.sendMessage("De molaire massa van " + commandText + " is: " + util.atomicMass(mol) + " g/mol", event.threadID)

}
else {
api.sendMessage("Fout, onjuiste opmaak", event.threadID)

}

break;

我也试过

if (util == undefined || (util.atomicMass != undefined && util.atomicMass(mol) != undefined)) {

相反,但没有运气。

我得到的错误是:

ERR! ERROR in listen -->  TypeError: Cannot read property 'atomicMass' of undefined
ERR! ERROR in listen --> at C:\Users\Bd\node_modules\periodic-table\util.js:16:54

虽然我确实在开头定义了 util,但它可以很好地处理现有的分子。使用无意义的输入,它不会给我想要的错误。console.log(util) 给我 { atomicMass: [Function: atomicMass] } 所以它被定义了。

我的整个代码是: http://pastebin.com/6u2bMbXF

或者 util 本身可能有问题,为什么这不起作用?

编辑:

   if (typeof util.atomicMass(mol) == "object") 

也不行。

最佳答案

使用try ... catch声明。

您的代码示例:

try {
api.sendMessage("De molaire massa van " + commandText + " is: " + util.atomicMass(mol) + " g/mol", event.threadID);
} catch (e) {
if (e instanceof TypeError) {
api.sendMessage("Fout, onjuiste opmaak", event.threadID);
} else {
throw e;
}
}

检查和抛出不是必需的,您可以只记录所有异常并始终向用户发送相同的文本。

PS:我不确定它是否在 JS 中很常见,它更像 Pythonic 方式(EAFP)

关于javascript - javascript 中的 If/else 不返回未定义的 else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36283929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com