很抱歉出现noobie问题,但:

我最近才发现'='运算符是如何不仅仅是处理对象/等的。值,也可以参考。一切都很酷,但是我认为变量并不相同,并且它不会在存储整数或浮点数的变量之间创建引用。后来我认为我是正确的,但这就是为什么我对此表示怀疑的原因:

我有一个用于输入四个值(fx,fy,sx,sy)的函数,它们定义了两个点,它将返回这两个点的线段与第一个点的光线(fx,fy)之间的角度到(+ Infinity,fy)。
  比起我有一个用于鼠标移动的事件监听器,还有两个值fa和sa。我的代码是:

/*mx and my are the points of the mouse, px and py are x and y of some point*/
sa=fa;
fa=angle(px,py,mx,my);
/*here on I use those values sa and fa for something*/


但是问题是,fa和sa始终具有相同的值(从逻辑上来说,这使我感到困惑)。我有点猜测该函数可能返回一个对象而不是变量,但是我不确定。因此,我认为我应该在此处包括该功能:

function angle(fx,fy,sx,sy){
    this.arsn=0.00000000000001;
    this.ba;this.ba1;this.ba2;
    this.d=((fx-sx)**2+(fy-sy)**2)**(1/2);
    this.a = sx-fx;
    this.b = sy-fy;
    this.ba1=Math.asin(b/d);
    this.ba2=Math.acos(a/d);
    if(Math.abs(this.ba1-this.ba2)<this.arsn)
        this.ba=this.ba1;
    else if(Math.abs(this.ba1+this.ba2-Math.PI)<this.arsn){
        this.ba=this.ba2;
    }else if(Math.abs(this.ba1+this.ba2)<this.arsn){
        this.ba=2*Math.PI-ba2;
    }else if(Math.abs(-this.ba1+this.ba2-Math.PI)<this.arsn){
        this.ba=Math.PI-this.ba1;
    }
    return this.ba;
}


有人可以告诉我如何不在fa和sa之间创建引用,但仍将值从fa传递给sa吗?我做了一些研究,导致我here,但是这些答案似乎太复杂了,大多是面向对象的或使用json。我所知道的只是javascript(我不会说我太擅长了)。

最佳答案

使用函数返回值时,请使用var代替this.

关于javascript - 令a和b为变量。如何将a的值设置为b之一,但不创建a和b之间的引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45843368/

10-09 07:18