js新手,求教大神,為什麼onclick不能直接呼叫含參函數而需要寫成onclick=function(){fn(p)}的形式?而非含參函數可以直接寫成onclick=fn();?深層原理是什麼?謝謝
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
onclick其實是可以直接綁定有參數的函數,如下:
onclick
const input = document.getElementById('input'); input.onclick = function(params){ console.log(params); };
但是,請注意,你的需求是執行函數fn(p),執行的結果是回傳一個值,而不是一個函數。 fn(p),执行的结果是返回一个值,而不是一个函数。onclick作為點擊時的回呼事件,如果綁定,是一定要綁定一個函數的,而不是一個值。如下:
fn(p)
input.onclick = function(){ fn(p); };
這裡的意思是,給input綁定一個onclick事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)事件,這個事件是一個函數,點擊時,回調就被執行了,意味著函數也被執行了,函數執行時,其中的語句fn(p )就被執行了。
fn(p )
onclick = function(e) {console.log(e)}
嘗試綁定這個click函數 ,再看下結果唄
onclick
其實是可以直接綁定有參數的函數,如下:但是,請注意,你的需求是執行函數
fn(p)
,執行的結果是回傳一個值,而不是一個函數。fn(p)
,执行的结果是返回一个值,而不是一个函数。onclick
作為點擊時的回呼事件,如果綁定,是一定要綁定一個函數的,而不是一個值。如下:這裡的意思是,給input綁定一個
onclick
事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)
事件,這個事件是一個函數,點擊時,回調就被執行了,意味著函數也被執行了,函數執行時,其中的語句fn(p )
就被執行了。嘗試綁定這個click函數 ,再看下結果唄