Question

Hi, I recently got a piece of JavaScript code snippet from here.

Could someone please explain how this statement works: (jq=jq.slice(1)).length && hidenext(jq);in the function below?

(function hidenext(jq){
    jq.eq(0).fadeOut("fast", function(){
        (jq=jq.slice(1)).length && hidenext(jq);
    });
})($('div#bodyContent a'))
Was it helpful?

Solution

Here, as the result isn't used, the logical AND is used as a kind of short if.

It's the same as

if ((jq=jq.slice(1)).length) hidenext(jq);

It uses the fact that the second part won't be evaluated if the first one doesn't evaluate as true.

OTHER TIPS

It means that hidenext(jq) will only be called if jq (now set to the return value of jq.slice(1) has a length > 0. Because && is short-circuited, evaluation is halted if the first operand is falsy.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top