2014-12-21 52 views
0

我需要兩個變量,x和y,以及一個包含兩個變量的方程,它總是等於1。 這是一個簡單的例子。這個例子可以很容易用y來定義,比如y = 1/x,但是我有另一個需要使用的方程,而且很難用y來定義。可以將兩個變量操作等同於JavaScript中的常量嗎?

var x, y; 
x*y = 1; 
x = Math.random()*20; 
console.log(y); 

我會得到一個錯誤消息對於這一點,像

Uncaught ReferenceError: Invalid left-hand side in assignment (line 2) 

變量可以被定義爲x*y,像var z= x*y,但顯然不是一個常數。也許有一些解決方法,比如定義兩個變量,一個作爲常量,另一個作爲方程,並找到一些方法來將它們聯繫起來?也許JavaScript的寬鬆會允許一些新技術?

提前致謝! :)

+0

編程語言不這樣工作。 – SLaks

+0

'='表示*賦值*,不是數學上的等式。 –

回答

0

你不能直接這樣做。 x的值取決於值y。你必須描述他們的依賴。

你可以這樣做:

var x_y = (function() { 
    var x = 1, y = 1; 
    return { 
     set_x: function (new_x) { 
      x = new_x; 
      y = 1/new_x; 
     }, 
     set_y: function (new_y) { 
      y = new_y; 
      x = 1/new_y; 
     }, 
     get_x: function() { 
      return x; 
     }, 
     get_y: function() { 
      return y; 
     } 
    }; 
}()); 
x_y.set_x(Math.random()*20); 
console.log(x_y.get_y()); 

所以基本上我們說x = 1/y;y = 1/x;,我們夫婦的價值觀:如果你換一個,另一個也會改變。

+0

這很容易用x來定義y,但我需要用一個很難用y來定義的方程。但謝謝你提供你的答案。 – JavaScriptArray

+0

我沒有看到解決辦法。如果你想知道給定'x'的'y',你必須知道這個操作。另一種方法是使用一些啓發式方法來試圖提高'y'的價值。 – Halcyon

相關問題