javascript - 為什麼onclick不能直接呼叫含參函數而需要寫成onclick=function(){fn(p)}的形式?
高洛峰
高洛峰 2017-05-19 10:31:56
0
2
870

js新手,求教大神,為什麼onclick不能直接呼叫含參函數而需要寫成onclick=function(){fn(p)}的形式?而非含參函數可以直接寫成onclick=fn();?
深層原理是什麼?謝謝

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
PHPzhong

onclick其實是可以直接綁定有參數的函數,如下:

const input = document.getElementById('input');
input.onclick = function(params){
  console.log(params);
};

但是,請注意,你的需求是執行函數fn(p),執行的結果是回傳一個值,而不是一個函數。
fn(p),执行的结果是返回一个值,而不是一个函数。
onclick作為點擊時的回呼事件,如果綁定,是一定要綁定一個函數的,而不是一個值。如下:

input.onclick = function(){
  fn(p);
};

這裡的意思是,給input綁定一個onclick事件,这个事件是一个函数,点击时,回调就被执行了,意味着函数也被执行了,函数执行时,其中的语句fn(p)事件,這個事件是一個函數,點擊時,回調就被執行了,意味著函數也被執行了,函數執行時,其中的語句fn(p )就被執行了。

小葫芦
onclick = function(e) {console.log(e)}

嘗試綁定這個click函數 ,再看下結果唄

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板