设a和b为变量。如何将值设置为b,但不能在a和b之间创建引用?

时间:2017-08-23 15:06:57

标签: javascript

对于noobie问题感到抱歉,但是:

我最近才知道' ='运营商并不只是处理对象/等。值,但也参考。这很酷,但我认为变量并不相同,并且它不会在存储整数或浮点数的变量之间创建引用。我后来认为我是对的,但这就是我怀疑的原因:

我有一个输入四个值(fx,fy,sx,sy)的函数,定义了两个点,它会返回这两个点的线段和第一个点的光线之间的角度(fx ,fy)to(+ 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(而且我不会说我太擅长了)。

1 个答案:

答案 0 :(得分:1)

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