首页 > 解决方案 > 为什么新函数 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 + 510*1702*(6-13)/17)可以正常工作。问题是当我需要更复杂的东西时,例如cosor 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.

标签: javascript

解决方案


推荐阅读