首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >atan()返回Nan

atan()返回Nan
EN

Stack Overflow用户
提问于 2019-08-31 03:47:59
回答 1查看 473关注 0票数 0

我正在用JavaScript写我的第一个项目。据我所知,Math.atan()返回一个数字(以弧度表示的角度)。但不知何故,它返回了Nan。

使用console.log(),我检查了所有变量(ry、rx、this.y、this.x),它们都是数字。而是为了

代码语言:javascript
复制
console.log(Bullet.q)

我知道"NaN“这个词。

代码语言:javascript
复制
function createBullet(rx, ry){
    let Bullet = kontra.Sprite({
        x: player.x,
        y: player.y,
        v: 4,
        q: Math.atan((ry-this.y)/(rx-this.x)),
       // k: this.v/Math.sqrt((ry-this.y)*(ry-this.y)+(rx-this.x)*(rx-this.x)),
        //dx: (rx-this.x)*this.k,
        dx: Math.cos(this.q)*this.v,
        //dy: (ry-this.y)*this.k,
        dy: Math.sin(this.q)*this.v,

    });

    console.log(ry);
    console.log(Bullet.q);
    console.log(Bullet.dy);

}

我是第一次接触这门语言,我是不是错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-31 03:55:47

还有一种“聪明”的方法,它利用JS的泄漏赋值,并使用额外的顶级变量来存储对象文字之外所需的属性:

代码语言:javascript
复制
function createBullet(rx, ry){
    var q,v;
    let Bullet = kontra.Sprite({
        x: player.x,
        y: player.y,
        v: v = 4,
        q: q= Math.atan((ry-player.y)/(rx-player.x)),
        dx: Math.cos(q)*v,
        dy: Math.sin(q)*v,

    });

    console.log(ry);
    console.log(Bullet.q);
    console.log(Bullet.dy);

}

也就是说,我真的不喜欢聪明的代码,为了更好的可读性,你可能想要在文字之前计算这些属性。

getter的内联使用方式:

代码语言:javascript
复制
var obj = {
 a: 1,
 b: 2,
 get sum() { return this.a+this.b}
};

alert(obj.sum);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57732489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档