var one = function(h){ two() } var two = function(){ } one('hello')
怎么在two函数不传参的情况下,在two函数体内获得h的值啊?
one two都在全局的生命期中,估计是用全局变量吧
方法1:将变量h定义为全局变量。
<script type="text/javascript">
var h=123;
var two=function(){
h++;//在two()函数内部拿到了h值
}
</script>
方法2:用页面标签储存h的值,然后在two函数内部读取该值。
用一个隐藏标签储存h
在two函数内部读取h的值,如:
页面中添加一个隐藏标签<input id="test" type="hidden" />
<script type="text/javascript">
$(function(){
$("#test").attr("aaa",h);//将h的值存在id为“test”的标签的属性aaa中。
});
var two=function(){
var h=$("#test").attr("aaa");//读取id为"test"的标签的属性aaa的值。
... ...
};
</script>
全局,这样也就不用传h了
静态方法底下
定义一个全局的变量吧。
全局变量是比较好的一种方式
不传参的话,只能用闭包。把two函数定义到one函数内。
可以详细的描述下你这样做的目的么?
function Obj (){ var _h; this.one = function (h){ _h = h; this.two(); } this.two = function () { alert(_h); } } var obj = new Obj(); obj.one(1);
上面的方法可以隐藏并且保留h的值,如果不是你想要的效果,仔细回复下目的
方式1:在one函数的外面定义var h。
方式2:定义one.h