我最近开始使用CasperJS进行网络自动化,但有些事让我感到困惑。
如何从一个函数访问局部变量到另一个函数?例如:
casper.start('http://google.com', function(){
var someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
// How can I access someVar?jav
});
我知道someVar
不在第二个函数的范围内,但如何在不定义全局变量的情况下访问第二个函数中的someVar
?
答案 0 :(得分:2)
如何使用对象将某个变量作为属性:
poly.setPath(path);
答案 1 :(得分:1)
不使用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)
})();
答案 2 :(得分:0)
你不能这样做,以使它干净,有意义。定义全局变量是唯一干净的方法。您当然可以将变量放在casper
对象上,但这并不干净,因为如果您使用错误的变量名称,它可能会干扰CasperJS功能。我只在为casper
定义辅助函数时才这样做。
casper.start('http://google.com', function(){
this.someVar = 20;
});
casper.thenOpen('http://google.com/analytics', function(){
this.echo(this.someVar);
});