我只想将值从我的 new1 和 new new2 函数传递给 new3 函数
function new1(){
var a = 5;
}
function new2(){
var c=6;
}
function new3(){
if(a<c){
dosomething();
}
}
我只想将值从我的 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"
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!
您可以像这样在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();
}
您可以只返回值,例如:
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();
}
}