1

new1 および new new2 関数から new3 関数に値を渡したいだけです

function new1(){
  var a = 5;
}

function new2(){
  var c=6;
}

function new3(){
  if(a<c){
    dosomething();
  }
}
4

7 に答える 7

5
(function(){

  var a, c; // Not global, but available to all three functions

  function new1(){
    a = 5;
  }

  function new2(){
    c = 6;
  }

  function new3(){
    if(a < c)
      doSomething();        
  }

  new1();
  new2();
  new3();

})();

function doSomething(){
  console.log("Doing something");
}

console.log(typeof a); // "undefined"

デモ

于 2013-09-12T04:04:51.740 に答える
3

これを試してみてください:- http://jsfiddle.net/adiioo7/fBKub/

JS:-

function new1() {
    this.a = 5;
}

function new2() {
    this.c = 6;
}


function new3() {
    var objnew1= new new1();
    var objnew2= new new2();
    if (objnew1.a < objnew2.c) {
        alert("a less than b");
    }
}

new3();
于 2013-09-12T04:03:15.500 に答える
1

試す:

function new1(){

    var a = 5;
    return a;
}

function new2(){
var c=6;
    return c;
}

function new3(){
     if(new1()<new2()){
    // dosomething();
         alert("done");
       }
}

デモフィドル

于 2013-09-12T04:02:36.817 に答える
1

これは、オブジェクト指向プログラミングまたは名前空間のいずれかが必要なようです...

おっと:

このメソッドでは、状態を保持するオブジェクト (そのオブジェクトに固有の変数)それらの変数を操作するメソッドを作成するコンストラクターを作成します。

それぞれが独自の状態を持つ、そのオブジェクトの多くのバージョンを持つことができます。

function dosomething() {
  alert("Did something!");
}

var MyNewObject = function() {
  // Accessible to functions because the functions are closures.
  var a=0; 
  var c=0;

  this.new1 = function(){
    a=5;
  }

  this.new2 = function(){
    c=6;
  }

  this.new3 = function(){
    if (a < c){
      dosomething();
    }
  }
}

var objThatDoesNews = new MyNewObject();
objThatDoesNews.new3(); // Didn't do anything
objThatDoesNews.new1(); // Set a to 5
objThatDoesNews.new2(); // Set c to 6
objThatDoesNews.new3(); // Did something!

それを試してみてください。

名前空間:

この方法では、各変数が 1 つだけ存在するという点で、グローバル変数に似ています。ただし、名前空間 (単純な JS オブジェクト) により、名前の競合を回避できます。

function dosomething() {
  alert("Did something!");
}

var MyNamespace = {
  a: 0,
  c: 0,

  new1: function(){
    this.a=5;
  },

  new2: function(){
    this.c=6;
  },

  new3: function(){
    if(this.a < this.c){
      dosomething();
    }
  }
}

MyNamespace.new3(); // Didn't do anything
MyNamespace.new1(); // Set a to 5
MyNamespace.new2(); // Set c to 6
MyNamespace.new3(); // Did something!

それを試してみてください。

于 2013-09-12T04:05:45.980 に答える
0

このように、Javaスクリプトである関数から別の関数に値を渡すことができます

function func1(){
var c=6;
var a =5;
func2(c,a);
 }

function func2(obj1, obj2){
 //some operation here using obj1 and obj2
}

しかし、異なるメソッドから値を渡したい場合、2 つの異なる呼び出しがあり、呼び出された関数は次の呼び出しまで値を保持しません。

あなたの場合、 a または c の値の少なくとも1つは、呼び出された関数に対してグローバルに宣言する必要があり、1つを渡すことができます。

もう 1 つの代替手段として、戻り値を持つ関数を使用し、別の関数内で関数を直接呼び出すことができます。

function func1(){
 var c = 5;
  return c;
 }

function func2(){
 //use func1 here
 func1();
}
于 2013-09-12T04:02:52.103 に答える
0

次のような値を返すことができます。

    function new1(){
      var a = 5;
      return a;
    }

    function new2(){
        var c=6;
        return c;
    }


    function new3(){
       //get values
       var x = new1(), y = new2();
       if(x < y){
           dosomething();
      }
}
于 2013-09-12T04:03:16.317 に答える
0
function new1(){

    var a = 5;
new2(a);
}

function new2(a){
var c=6;
new3(a, c)
}


function new3(a, c){
     if(a<c){
     dosomething();
       }

}

于 2013-09-12T04:03:47.893 に答える