<script type="text/javascript">
var o;
function fun()
{
o=document.getElementById(id)

}

function fua()
{
o=document.getElementById(id)

}

function fub()
{
o=document.getElementById(id)

}
</script>如代码所示 定义多个方法。 是在方法外先定义一个全局变量o好些。 还是直接在方法里面定义私有变量o好些呢?
为什么???

解决方案 »

  1.   

    为什么要这样写,你可以定义一个通用函数
    $=function(id){
        return document.getElementById(id);
    }到时候你需要用,直接作为参数传进去就可以了,$(id)返回你要的DOM节点
      

  2.   

    根本没有什么好与坏之分,关键在于lz要解决啥问题?!全局变量和局部变量差别在于作用域的范围不同而已,
    至于定义哪一种就要根据 lz 需要解决滴问题而定了!
      

  3.   

    尽量用局部变量吧,除非确实需要全局变量(如统计点击某个控件的次数)。
    如你顶楼的代码,如果定义了全局变量,每次调用不同的函数时,都会使 o 这个变量发生变化,
    一旦其他地方需要一个固定的指向原来o的调用,不小心就错了;而且全局变量一直存续再内存中,直至网页关闭。
    定义为局部变量则没有这个问题,函数调用结束即被清理出去。<script type="text/javascript">
    var o=null;//全局
    var clicknum=0;function CountClick(){
      clicknum += 1;
      alert("点击了"+clicknum+"次");
      o=document.getElementById("a")//改变
    }</script>
    <div id=myid onclick="javascript:alert('我的id应该是myid。现在显示的是什么?-->:  '+o.id)" >先点我没问题 click me</div>
    <div id=a onclick="javascript:CountClick();">点了我再点上面就有问题 click me</div><script>
    o=document.getElementById("myid")//赋值
    </script>
    当然,这仅仅是举例,实际使用时很少这样的用法