如下面的例程:
<SCRIPT LANGUAGE="JavaScript"><!--var can_play = false;var mimetype = 'audio/midi';if (navigator.mimeTypes) {if (navigator.mimeTypes[mimetype] != null) {if (navigator.mimeTypes[mimetype].enabledPlugin != null) {can_play = true;document.write('<EMBED SRC="sound.mid" HIDDEN=TRUE LOOP=FALSE AUTOSTART=FALSE>');}}}function playSound() {if (document.embeds && can_play) {if (navigator.appName == 'Netscape')document.embeds[0].play();elsedocument.embeds[0].run();}}function stopSound() {if (document.embeds && can_play)document.embeds[0].stop();}//--></SCRIPT>以下是具体代码:<A HREF="#" onMouseover="playSound()" onMouseOut="stopSound()"><IMG SRC="image.gif" WIDTH="100" 
HEIGHT="100" BORDER="0"></A>函数playSound()、stopsound()是在链接的onclick事件中被调用,所以执行。而其他javascript语句if (navigator.mimeTypes) {if (navigator.mimeTypes[mimetype] != null) {
没有被调用,就直接执行了
是这个意思吧!

解决方案 »

  1.   

    一般来说,JavaScript的载入顺序就是它的执行顺序,当脚本载入时,浏览器就会把它“从头到尾”执行一遍。但遇到 function 定义时,就只执行函数定义,不执行“{}”里的脚本。如:
    function f1()
    {
      alert("!"); // 定义时不执行;被调用时执行
    }
    var f2 = function()
    {
      alert("!!"); // 定义时不执行;被调用时执行
    }
    只有当被定义的函数 在其他位置被调用 或者 被实例化 时才按同样的规则执行里面的脚本。如:
    f1();
    f2();
    // 或 实例化 如下
    var a1 = new f1();
    var a2 = new f2();
    也就是说 function 定义只有在使用“函数名()”方式调用或者使用“new”关键字实例化的时候才会执行定义里的脚本。而其他语句则按载入的顺序逐句执行。