Selecting the correct price What are your opinions on my JavaScript function? Can my code below be refactored?

var updatePrice = function () {
    var goPrice;
    var returnPrice;
    if (typeof scope.selectedGo !== 'undefined' &amp;&amp; typeof scope.selectedReturn !== 'undefined') {
        for (var go in scope.gooffers) {
            if (scope.gooffers[go].tarifPremiere !== null &amp;&amp; typeof scope.gooffers[go].tarifPremiere !== 'undefined' &amp;&amp; scope.selectedGo === scope.gooffers[go].tarifPremiere.id) {
                goPrice = scope.gooffers[go].tarifPremiere.tarif;
            } else if (scope.gooffers[go].tarifSecondeFlex !== null &amp;&amp; typeof scope.gooffers[go].tarifSecondeFlex !== 'undefined' &amp;&amp; scope.selectedGo === scope.gooffers[go].tarifSecondeFlex.id) {
                goPrice = scope.gooffers[go].tarifSecondeFlex.tarif;
            } else if (scope.gooffers[go].tarifSecondeNoFlex !== null &amp;&amp; typeof scope.gooffers[go].tarifSecondeNoFlex !== 'undefined' &amp;&amp; scope.selectedGo === scope.gooffers[go].tarifSecondeNoFlex.id) {
                goPrice = scope.gooffers[go].tarifSecondeNoFlex.tarif;
            }
            if (scope.returnoffers[go].tarifPremiere !== null &amp;&amp; typeof scope.returnoffers[go].tarifPremiere !== 'undefined' &amp;&amp; scope.selectedReturn === scope.returnoffers[go].tarifPremiere.id) {
                returnPrice = scope.returnoffers[go].tarifPremiere.tarif;
            } else if (scope.returnoffers[go].tarifSecondeFlex !== null &amp;&amp; typeof scope.returnoffers[go].tarifSecondeFlex !== 'undefined' &amp;&amp; scope.selectedReturn === scope.returnoffers[go].tarifSecondeFlex.id) {
                returnPrice = scope.returnoffers[go].tarifSecondeFlex.tarif;
            } else if (scope.returnoffers[go].tarifSecondeNoFlex !== null &amp;&amp; typeof scope.returnoffers[go].tarifSecondeNoFlex !== 'undefined' &amp;&amp; scope.selectedReturn === scope.returnoffers[go].tarifSecondeNoFlex.id) {
                returnPrice = scope.returnoffers[go].tarifSecondeNoFlex.tarif;
            }
        }
       if (goPrice !== null &amp;&amp; typeof goPrice !== 'undefined' &amp;&amp; returnPrice !== null &amp;&amp; typeof returnPrice !== 'undefined') {
                    scope.finalPrice = goPrice + returnPrice;
        }            
    }
};
Variable naming is very important for readability.
Now, as some background, when I first saw your question, it had the title:

What are your opinions on my javascript function?

Titles like that are an poor choice for code review, and as a moderator, we actively change titles like that to reflect what the code does, and not what the question asker sees as being the problems in the code.
Unfortunately, when I read your code, to try to see what it does, all I could think of was goofers... it took me a few moments to understand that the code was meant to be &quot;go offers&quot;.
camelCase to the rescue...

gooffers should be goOffers
scope.returnoffers should be scope.returnOffers

Apart from those two, all your other variables are correcly cased. The following are good:

tarifSecondeFlex
tarifPremiere
scope.selectedGo
goPrice
etc.

Note, I believe you have mixed some natural language variable names in there. Is that French? In general, when programming, you should pick a language, and stick to it. You have a mix. Since you have goPrice and selectedGo which appear to be English, I would expect tarifPremiere to be primaryPrice, etc.
Language consistency goes a long way toward readability.
DRY code
Repetitive code is often an indication that function-extraction would be useful.
Consider a function like:
function selectedTarif(component, selection) {
    if (component == null || typeof component == 'undefined' || component.id !== selection) {
        return null;
    }
    return component.tarif;
}

Then, your code can become a cascading 'falsy' test:
var updatedPrice = selectedTarif(scope.goOffers[go].tarifPremiere, scope.selectedGo)
            || selectedTarif(scope.goOffers[go].tarifSecondeFlex, scope.selectedGo)
            || selectedTarif(scope.goOffers[go].tarifSecondeNoFlex, scope.selectedGo);
if (updatedPrice) {
    goPrice = updatedPrice;
}

var updatedReturn = selectedTarif(scope.returnOffers[go].tarifPremiere, scope.selectedReturn)
            || selectedTarif(scope.returnOffers[go].tarifSecondeFlex, scope.selectedReturn)
            || selectedTarif(scope.returnOffers[go].tarifSecondeNoFlex, scope.selectedReturn);
if (updatedReturn) {
    returnPrice = updatedReturn;
}