1. 程式人生 > >看到很多人都寫的是javascript:void(0);,新浪微博也是,為什麼不能直接寫成javascript:;?

看到很多人都寫的是javascript:void(0);,新浪微博也是,為什麼不能直接寫成javascript:;?

北風網解答:

對於void的說明:

void 運算子對任何值返回 undefined。該運算子通常用於避免輸出不應該輸出的值,例如,從 HTML 的 <a> 元素呼叫 JavaScript 函式時。要正確做到這一點,函式不能返回有效值,否則瀏覽器將清空頁面,只顯示函式的結果。例如:

 <a href="javascript:window.open('about:blank')">Click me</a>

這使 window.open() 呼叫返回 undefined,它不是有效值,不會顯示在瀏覽器視窗中。

提示:請記住,沒有返回值的函式真正返回的都是 undefined。

針對樓主的問題,借用上面stackoverflow連結中的程式碼:

<a onclick="fn()">Does not appear as a link, because there's no href</a>  

<a href="javascript:void(0)" onclick="fn()">fn is called</a>  
<a href="javascript:undefined" onclick="fn()">fn is called</a>  
<a href="javascript:" onclick="fn()">fn is called too!</a>