2 回答

TA貢獻167條經驗 獲得超46個贊
第一,window.onload=two 不是調用函數,而是window的onload方法指向two ,賦值最后一次覆蓋了前面的賦值,然后頁面加載完成時,window對象才去調用onload 這個函數,而這個函數已指向two 函數,所以他調用的是two ;此時執(zhí)行一下輸出two;第二,window.onload =two ();他先調用一次one函數,然后將返回值付給window 的onload 函數,此時執(zhí)行一下輸出one ,無返回值意味著返回null 付給了window 的onload,然后再調用一次two 函數,將返回值付給window 的onload函數,此時執(zhí)行一下輸出two ;又把返回的null 賦值給window 的onload 方法,這下window 加載完畢后去調用onload函數發(fā)現(xiàn)是null ,便什么也沒有執(zhí)行!所以你說的兩種寫法函數的調用時機是不一樣的!

TA貢獻436條經驗 獲得超108個贊
等號是賦值,加上括號的意思相當于執(zhí)行函數然后把返回值賦給window.onload所以會彈出one、two;不加括號相當于將window.onload指向one、two函數,而后者的賦值會覆蓋前者的賦值,所以實際上onload最終指向two這個函數,然后頁面加載完觸發(fā)load事件并執(zhí)行two函數,所以彈層two
添加回答
舉報