首頁  >  問答  >  主體

javascript - 為什麼onclick不能直接呼叫含參函數而需要寫成onclick=function(){fn(p)}的形式?

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

高洛峰高洛峰2696 天前819

全部回覆(2)我來回復

  • PHPz

    PHPz2017-05-19 10:33:56

    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 )就被執行了。

    回覆
    0
  • 高洛峰

    高洛峰2017-05-19 10:33:56

    onclick = function(e) {console.log(e)}

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

    回覆
    0
  • 取消回覆