javascript - 为什么新函数 JavaScript 中未定义数学
问题描述
我正在运行一个不和谐的机器人,我添加的功能之一是简单的数学计算。代码(粗略)如下:
class Bot{
constructor(){
this.prefix = '!';
this.client = new Client();
this.clinet.on('message', message => this.onMessage(message))
}
onMessage(message){
const content = message.content;
try{
const result = new Function(`return ${content.slice(this.prefix.length + 'solve '.length)}`)();
message.channel.send(result)
}catch(err){
message.channel.send("Error" + err)
}
}
}
这当然包含在 中try - catch
,并且简单的数学方程式(5 + 5
、10*170
等2*(6-13)/17
)可以正常工作。问题是当我需要更复杂的东西时,例如cos
or sqrt
。通常我会从Math
对象中得到这些,所以Math.cos()
或Math.sqrt
。但是,当我将其输入到命令中时,它只会返回Math is not defined
. 我知道范围可能与此有关,但是有什么办法可以解决吗?
编辑:以下是一些会导致错误的消息:
!solve Math.cos(5)
!solve Math.sqrt(4)
!solve Math.sin(50) * Math.PI
!solve 5 * Math.floor(5.1)
etc.
解决方案
推荐阅读
- python - 如何在我的班级中设置一个默认字段,以便在 Django Rest 迁移到我的 sqlite 数据库?
- ios - Swift - 可选属性的 JSON 序列化
- network-programming - Ansible 路由器模板生成器 - vars_prompt 的问题
- python-3.x - 底图不显示绘制的数据(如果完全绘制)
- java - SOAP - 空体
- python - 根据其他列的 groupby 为列设置值
- javascript - javascript - 多个移动墙
- keras - 在 keras 中获得相同模型 FFNN 的不同结果
- python - Pythonista 如何在 App Store 限制中工作?
- swift - 使用研究工具包不能跳过一个步骤