http://bbs.51js.com/viewthread.php?tid=71851&highlight=%C7%F8%B1%F0

解决方案 »

  1.   

    就是说js解释器在解释js程序时,会先预载js函数然后顺序执行js其他程序,而var a=function(){}这种形式的代码会被当成普通的附值语句在预载函数之后进行顺序执行,当执行到此语句是会检测预载函数中是否有重名函数,有则覆盖。
      

  2.   

    所以当function a(){}与var a=function(){}同时存在时,js解释器会先预解释function a(){}后再执行var a=function(){},然后var a=function(){}会把function a(){}覆盖,解析按此顺序不分谁前谁后。PS: 貌似CSDN未处理open()造成的Session丢失情况。