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!

试试看。

命名空间:

在这种方法中,它类似于全局变量,因为每个变量只存在一个。但是,由于命名空间(它只是一个简单的 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
}

但是您想从不同的方法传递值,它将有两个不同的调用,并且被调用的函数在下一次调用之前不会保存值。

在您的情况下,必须将 a 或 c 中的至少一个值声明为全局调用函数,并且您可以传递一个。

选择

另一种选择是您可以拥有带有返回值的函数,并且您可以直接在另一个函数中调用函数。

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 回答