从不同的函数访问变量而不创建全局变量
Access Variable from a different function without creating global variables
我最近开始使用 CasperJS 来做 Web 自动化,有些事情让我有点困惑。
如何从一个函数访问局部变量到另一个函数?例如:
casper.start('http://google.com', function(){
var someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
// How can I access someVar?jav
});
我知道 someVar
不在第二个函数的范围内,但是如何在不定义全局变量的情况下在第二个函数中访问 someVar
?
使用对象获取某个变量怎么样属性:
var myObj = {};
casper.start('http://google.com', function(){
myObj.someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
console.log(myObj.someVar);
});
你不能这样做,这样它就干净且有意义了。定义全局变量是唯一干净的方法。您当然可以将变量放在 casper
对象上,但这并不干净,因为如果您使用错误的变量名称,它可能会干扰 CasperJS 的功能。我只在为 casper
.
定义辅助函数时才这样做
casper.start('http://google.com', function(){
this.someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
this.echo(this.someVar);
});
不使用你说的 Globals,然后创建第三个函数(bean),它将具有 var someVar = 20;
局部变量并提供 getter
和 setter
函数供其他人使用。
var SharedSpace = (function(){
var shared = 20; //initialization
return {
getShared: function(){
return shared;
},
setShared: function(val){
shared = val;
}
}
})();
(function(){
alert(SharedSpace.getShared());
SharedSpace.setShared(500)
})();
(function(){
alert(SharedSpace.getShared());
SharedSpace.setShared(400)
})();
(function(){
alert(SharedSpace.getShared());
SharedSpace.setShared(10)
})();
我最近开始使用 CasperJS 来做 Web 自动化,有些事情让我有点困惑。
如何从一个函数访问局部变量到另一个函数?例如:
casper.start('http://google.com', function(){
var someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
// How can I access someVar?jav
});
我知道 someVar
不在第二个函数的范围内,但是如何在不定义全局变量的情况下在第二个函数中访问 someVar
?
使用对象获取某个变量怎么样属性:
var myObj = {};
casper.start('http://google.com', function(){
myObj.someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
console.log(myObj.someVar);
});
你不能这样做,这样它就干净且有意义了。定义全局变量是唯一干净的方法。您当然可以将变量放在 casper
对象上,但这并不干净,因为如果您使用错误的变量名称,它可能会干扰 CasperJS 的功能。我只在为 casper
.
casper.start('http://google.com', function(){
this.someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
this.echo(this.someVar);
});
不使用你说的 Globals,然后创建第三个函数(bean),它将具有 var someVar = 20;
局部变量并提供 getter
和 setter
函数供其他人使用。
var SharedSpace = (function(){
var shared = 20; //initialization
return {
getShared: function(){
return shared;
},
setShared: function(val){
shared = val;
}
}
})();
(function(){
alert(SharedSpace.getShared());
SharedSpace.setShared(500)
})();
(function(){
alert(SharedSpace.getShared());
SharedSpace.setShared(400)
})();
(function(){
alert(SharedSpace.getShared());
SharedSpace.setShared(10)
})();