سؤال

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'))
هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top