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'))
Était-ce utile?

La 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.

Autres conseils

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top