1,下面的代码结束后 要加分好吗?xxx.onmouseover=function(){
    //一些语句
}
这个大括号}后面要加分号吗?严格的讲。假如这代码不是最后一段代码。2,下面的写法 哪种比较耗资源 或者比较卡function myfun()
{
//一些语句
}
xxx.onmouseover=myfun();

xxx.onmouseover=function(){
    //一些语句
}
相比,那个比较规范或者哪个节省资源(假设是这段代码是被setInterval调用的)3,是不是可以将所有类似下面的结构的代码<div id="mydiv" onmouseover="javascript:haha();">test....</div>
<script language="JavaScript">
<!--
function haha()
{
//一些代码
}
//-->
</script>
写成如下的形式<div id="mydiv">test....</div>
<script language="JavaScript">
<!--
mydiv.onmouseover=function(){
    //一些语句
}
//-->
</script>或者<div id="mydiv2">test....</div>
<script language="JavaScript">
<!--
function myfun()
{
//一些语句
}
mydiv2.onmouseover=myfun();//-->
</script>三个问题,希望得到耐心人士的解答。热切等待中
(注意问题的逻辑)

解决方案 »

  1.   

    1、要加分号,但是JS不强求
    2、第二种是匿名函数。卡不卡没影响,但是能保证这个函数不会被其他地方调用。相当于节约了一个全局函数
    3、第三个是这样的,效果是一样的,后者的好处是html和js做到分离了,但是你在调用的地方不需要javascript:的~~~!
      

  2.   

    问题1: 后面最好加分号!浏览器解析时会自动添加一个分号!但是如果你最后} 后面没换行,还有其它代码,会出错!加了分号,压缩js后不会出错!我有N次因为忘记分号,压缩js后出错,我还得一行一行的找是哪少了分号!
    问题2: 我个人认为2种方式占用资源差不多。如果这个函数需要在其它地方调用,用第一种。不然永第2种!问题3: 完全没问题!
      

  3.   

    提示一点:
    function myfun()
    {
    //一些语句
    }
    xxx.onmouseover=myfun();
    加上括号就不是注册事件了,就是接收事件的返回值了!
      

  4.   


    对的,函数名也就相当于指针,函数handler后面加个(),就相当于执行这个函数了xxx.onmouseover=myfun;
      

  5.   

    还有个小问题:申明函数的方式var f = function(){}

    function f(){}
    还是有点区别的.
    第一种如果同一页面里你已经有个变量fun,那你这个函数会覆盖掉原来那个变量;
    第二种如果页面有变量也叫fun2,那你调用fun2这个函数会失败,说函数未定义,不管fun2这个变量定义在函数上面还是下面,函数都会失效 var fun = 2; //var fun = function(){
    // alert('var fun = function()')
    //} function fun(){
    alert('function fun()')
    }<body onload="fun()">LZ先跑下,然后把下面的fun注释掉,上面的fun打开.看看发生什么
      

  6.   

    7楼说的我以前也看过。
    是探讨的声明方式之间的差异。
    具体的记不太清了。
    只是大概的印象。
    就是 function定义的是编译时定义,而var的是执行时定义。
    好像是这么个意思,也就是var执行的比function晚,所以var总会覆盖function方式定义的函数。