0

関数 2 で変数 y を再利用するにはどうすればよいですか? このトピックについて読みましたが、最も簡単な解決策は何ですか?

function one(){
    y = 2 
}

function two(){
    x = y * 2 
}​
4

4 に答える 4

8

あなたが要求したことを行う最も文字通りの方法は、それらを別の関数内に置き、それを宣言するとすぐに呼び出し (関数を閉じた()後に注意してください})、新しい関数のスコープで変数を宣言することです。内部関数は両方とも、それらの値を表示および変更できます。

また、内部関数自体を含む変数をラッパー関数の外部で宣言する必要があるため、それらを呼び出したいコードから見えるようになります。

var one, two;

(function() {
  var x, y;

  one = function() {
    y = 2;
  };

  two = function() {
    y = y * 2;
  };
}())

one();
two();

もう 1 つの一般的な方法は、変数の代わりにオブジェクトとそのプロパティを使用することです。

var myObject = {
  one: function() {
    this.y = 2;
  },
  two: function() {
    this.x = this.y * 2;
  }
}

myObject.one();
myObject.two();
于 2012-08-26T16:48:29.567 に答える
0

確かに、私は各関数のロジックをカプセル化したままにしておきたいと思います。

var y=3;
var x=3;

function one(){
    var y = 2;
    return y;

}

function two(){
    var y = one();
    var x = y * 2;
    return x;
}


document.write(one());
document.write(two());​

上記のコードで問題が解決した場合、関数1に複数の変数がある場合はどのように機能しますか。関数2で必要な50個の一意の変数を考えてみましょう。

于 2012-08-26T18:15:17.573 に答える
0

おそらく、各関数のロジックをカプセル化したままにし、関数 2 で関数 1 の戻り値を使用したいですか? このようなものは理にかなっているかもしれません:

function one(){
    var y = 2;
    return y;
}

function two(){
    var y = one();
    var x = y * 2;
}​

何か違うことを達成しようとしている場合は、詳細を追加する必要があります。

var省略すると、暗黙的に変数をグローバルに宣言していることに注意してください。これはノーノーです。

于 2012-08-26T16:52:38.537 に答える
0

次のような他の関数で使用するグローバル変数を宣言します

var y=0;
function one()
{
    y=2 

}

function two()
{
    x=y*2 
}​
于 2012-08-26T16:47:30.500 に答える