首先,我們來做個實驗吧。
打開任何一個瀏覽器的空頁,在地址輸入欄中輸入以下代碼:
會發生什麼呢?
答案是什麼都不會發生。
然後,我們再打開一個瀏覽器的空頁面,在地址欄中輸入以下代碼:
這樣又會發生什麼呢,是什麼都不會發生麼?
顯然不是,我們得到的是一個新的頁面,而且頁面的內容是JS代碼返回的值(也就是 hello );
爲什麼會這樣?
因爲在瀏覽器解析JS的時候,如果有返回值,那麼就會生成一個新的頁面,如果沒有就什麼都不做。
這就是爲什麼上面的兩個例子有這種差別。
好了,那入正題。
先來看下兩段很相似的代碼
然後,我們把這兩斷代碼放到同一個頁面中,依次點擊他們。
貌似沒有發生什麼,是不是這樣就可以說他們是等效的了呢?
那麼我們再來看一段代碼
這樣我們再分別點擊兩個鏈接看看,效果不一樣了吧。
href 爲#的跳到了自己的頁面。
原來‘#’代表的是 #top ,
top 屬性返回最頂層的先輩窗口。
該屬性返回隊一個頂級窗口的只讀引用。如果窗口本身就是一個頂級窗口,top 屬性存放對窗口自身的引用。如果窗口是一個框架,那麼 top 屬性引用包含框架的頂層窗口。
而void 函數則返回的是空,也就是讓瀏覽器不做任何事情。