@WingMeng的問題“想增加一個功能:窗口改變時重新獲取窗口大小”引申出來的疑惑。
<!DOCTYPE?HTML> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"> </head> <body> <script?type="text/javascript"> function?Size(){ ????var?Wt?=?document.documentElement.clientWidth?||?document.body.clientWeight; ????var?Ht?=?document.documentElement.clientHeight?||?document.body.clientHeight; ????document.innerHTML="瀏覽器當前窗口大小為:"?+?Wt?+"px×"?+?Ht?+?"px"; } Size();? //?當前窗口調(diào)整尺寸時重新獲取尺寸 window.onresize?=?function(){ ????Size(); } </script> </body> </html>
我有一個知識點不太懂,15行的代碼
window.onresize?=?function(){ ????Size(); }
為什么要加上function(){} ?
Size()不已經(jīng)是一個函數(shù)了嗎?
試了一下去掉function()后Size()只能運行一次,請問這是為什么?
具體的知識點在哪里講過還請大神明示,我好具體的看看。THX~
2015-07-12
一下詳細解答來自百度知道->@司馬唐遷。
js是事件驅(qū)動的,一個節(jié)點可以發(fā)生很多種事件,包括click事件。在js中,當節(jié)點發(fā)生某一個事件時,可以為該事件綁定一個處理函數(shù)。也就是類似的
所要注意的是,這個節(jié)點的onclick屬性,需要賦給一個函數(shù)類型的值,才可以處理事件。
但是displayDate()并不是一個函數(shù),你可以說你定義了displayDate函數(shù),但displayDate()也就是加了一對括號的displayDate,是函數(shù)執(zhí)行了,displayDate()是等價于displayDate的返回值的。在displayDate函數(shù)里,只是給id為demo的節(jié)點重新設(shè)置了內(nèi)容,沒有返回值,所以默認的就是undefined。
那么如果寫成
實際上是等價于
顯然undefined是不能作為節(jié)點事件的處理函數(shù)的。
但是,也不是一定要加上function(){},你可以寫成這樣:
雖然displayDate()不是函數(shù),但displayDate卻是函數(shù),是可以作為節(jié)點事件的處理函數(shù)的。
2015-07-09
這里執(zhí)行了一次Size();所以如果是這樣的話
無論窗口改不改變,Size()的值都直接賦值給window.onresize
因此要這樣
當窗口發(fā)生改變的時候,才再一次執(zhí)行Size();讓改變后的窗口值賦給window.onresize();
我的理解就是這樣,不對別噴,大家來探討