我只想将new1和new new2函数中的值传递给new3函数
function new1(){
var a = 5;
}
function new2(){
var c=6;
}
function new3(){
if(a<c){
dosomething();
}
}
答案 0 :(得分: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"
答案 1 :(得分:3)
<强> 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();
答案 2 :(得分:1)
尝试:
function new1(){
var a = 5;
return a;
}
function new2(){
var c=6;
return c;
}
function new3(){
if(new1()<new2()){
// dosomething();
alert("done");
}
}
<强> DEMO FIDDLE 强>
答案 3 :(得分:1)
看起来您想要Object oriented programming或namespacing ...
<强> OOP:强>
在此方法中,您创建一个constructor,它创建一个对象来保存您的状态(特定于该对象的变量)和方法来操作这些变量。
您可以拥有该对象的多个版本,每个版本都有自己的状态。
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!
答案 4 :(得分:0)
您可以像在这里一样将值从一个函数传递给另一个函数
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();
}
答案 5 :(得分: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();
}
}
答案 6 :(得分: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();
}
}