首頁  >  問答  >  主體

javascript - 請問這段 el && fn.call(el, e, el)程式碼這麼寫什麼意思?

#el && fn.call(el, e, el)這段程式碼這麼寫,我覺得有點懵逼。
如果是想呼叫fn的話為什麼不直接寫fn.call(el, e, el)。可是
前面還加&符號,他這是想求布爾值的話又不return。這樣求出true or false
又有什麼意義?

PHP中文网PHP中文网2663 天前1069

全部回覆(4)我來回復

  • 習慣沉默

    習慣沉默2017-07-05 11:09:11

    利用了 && 的短路性質。

    A && B

    意思是 如果 A 為假,那麼整個表達式就是假,不用給 B 求值。
    如果 A 為真,才再對 B 求值來判斷

    所以上面的程式碼的意思是

    如果 el 為真,那麼執行 fn.call(el, e, el);


    || 也有類似的性質:

    如果左值為真,後面的就不必求值了。

    例如 用來指定預設值

    function test(a){
        a = a || '默认值'; 
        
        return a; 
    }
    
    test(); 
    // => '默认值'
    test('wow'); 
    // => 'wow' 

    回覆
    0
  • 代言

    代言2017-07-05 11:09:11

    如果el存在的話 就呼叫後面的函數 否則不呼叫

    回覆
    0
  • 滿天的星座

    滿天的星座2017-07-05 11:09:11

    雷雷

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-07-05 11:09:11

    a && b 相當於
    if (a){

    b

    }

    回覆
    0
  • 取消回覆