gpt4 book ai didi

javascript - atan() 返回 Nan

转载 作者:行者123 更新时间:2023-12-02 23:02:35 26 4
gpt4 key购买 nike

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

使用console.log(),我检查了所有变量(ry、rx、this.y、this.x),并且都是数字。但对于

console.log(Bullet.q)

我得到“NaN”。

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);

}

我是这门语言的新手,我错过了什么吗?

最佳答案

还有一种“聪明”的方法来做到这一点,即利用 JS 的泄漏赋值并使用额外的顶级 var 来存储对象字面量之外所需的属性:

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 的方式:

var obj = {
a: 1,
b: 2,
get sum() { return this.a+this.b}
};

alert(obj.sum);

关于javascript - atan() 返回 Nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57732489/

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