Why don't logical operators (&& and ||) always return a boolean result?

后端 未结 9 1909
耶瑟儿~
耶瑟儿~ 2020-11-22 06:04

Why do these logical operators return an object and not a boolean?

var _ = (obj.fn && obj.fn() ) || obj._ || ( obj._ = {} );

var _ = obj &&          


        
9条回答
  •  萌比男神i
    2020-11-22 06:44

    Compare:

    var prop;
    if (obj.value) {prop=obj.value;}
    else prop=0;
    

    with:

    var prop=obj.value||0;
    

    Returning a truthy expression - rather than just true or false - usually makes your code shorter and still readable. This is very common for ||, not so much for &&.

提交回复
热议问题