2012-03-14 5 views
1

Я занимаюсь учебными программами и проектами в кодекадемии. На FizzBuzz ++ 1.5 они хотят, чтобы мы перезаписали функцию Wobble как Wob, используя тройные операторы. Я продолжаю получать сообщение об ошибке «Отсутствующий операнд» со следующим кодом. Также +1 в конце возврата, как это работает, javaScript сохраняет его как временное значение, потому что он не получает привязки к любому var. Спасибо за помощь. Код ниже.Тройное использование в FizzBuzz ++ 1.5 (codeacademy)

var Wibble = { 

    Wobble: function(a, b) { 
    if(a===b) 
     //if the variables are equal return 0 
     return 0; 
    else { 
     //decrement the larger of the 2 values 
     if (a>b) { 
      a--; 
     } else { 
      b--; 
     } 
     //call this function again with the decremented values 
     //once they are equal the functions will return up the stack 
     //adding 1 to the return value for each recursion 
     return Wibble.Wobble(a,b)+1; 
    } 
    }, 


//This is the line of code that doesn't want to function.. 
    Wob: function(a, b) { 
    (a===b) ? return 0 :(a<b) ? return this.Wob(a--,b)+1 : return this.Wob(a,b--)+1; 
    } 
}; 
+0

Я не JavaScript парень, но, возможно, поставит 2-й тернарный оператор в скобки. Кроме того, вам нужен второй тернар (a> b)? –

+0

Я бы немного осторожнее с вашими скобками. Посмотрите также на ответ Эдварда Томпсона. вы должны использовать только тернарный оператор, чтобы превратить условие в значение –

ответ

4

Следующее выражение с тройным оператором:

result = (a) ? x : y; 

эквивалентно следующему:

if(a) 
{ 
    result = x; 
} 
else 
{ 
    result = y; 
} 

Примечания синтаксической разницей, где в тройном операторе вы переключаетесь в, тогда как в синтаксисе оператора if вы назначаете в выключатель.

То есть сказать, что:

(a == b) ? return 0 : return 1; 

является не эквивалентно:

if(a == b) 
    return 0; 
else 
    return 1; 

Вместо этого, вы хотели бы написать:

return (a == b) ? 0 : 1; 
+0

Спасибо, это оказалось правильным кодом: – T110

+0

Wob: function (a, b) { return (a === b)? 0: ((a> б) this.Wob (- а, б) +1: this.Wob (а, - б) + 1); } -Ваше объяснения было здорово! – T110