如何在不声明全局变量的情况下将值从一个函数传递到另一个函数?

How can I pass a value from one function to another function without declaring a global variable in JS??

本文关键字:函数 一个 另一个 声明 全局变量 情况下      更新时间:2023-09-26

我只想将值从我的 new1 和 new new2 函数传递给 new3 函数

function new1(){
  var a = 5;
}
function new2(){
  var c=6;
}
function new3(){
  if(a<c){
    dosomething();
  }
}
(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"

演示

试试这个:- 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();

尝试:

function new1(){
    var a = 5;
    return a;
}
function new2(){
var c=6;
    return c;
}
function new3(){
     if(new1()<new2()){
    // dosomething();
         alert("done");
       }
}

演示小提琴

这看起来你想要面向对象的编程或命名空间...

哎呀:

在此方法中,您将创建一个构造函数,该构造函数创建一个对象来保存您的状态(特定于该对象的变量)以及用于对这些变量进行操作的方法。

您可以拥有该对象的多个版本,每个版本都有自己的状态。

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!

试试吧。

你可以只返回值,比如:

    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();
      }
}
function new1(){
    var a = 5;
new2(a);
}
function new2(a){
var c=6;
new3(a, c)
}

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

}

您可以在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();
}