Changing the view based on these if/else statements If the user has not responded = edit mode.   
If there are responses present but the overall status is 'Completed' = lock everything into display mode.  
If the stage is less than or equal to 'editable in stage', it is considered editable and if also the response given has a code of 0 or 2 (standardized responses via "coding" them).  
Otherwise set it to display. 


This code works as desired but it's hard to read/maintain.   

    if (typeof response !== 'string') {
        mode = edit;
    } else {
        if (status.indexOf('Completed') !== -1) {
            mode = display;
        } else {
            if ((stage &lt;= isEditable) &amp;&amp; (code == 0 || code == 2)) {
                mode = edit;
            } else {
                mode = display;
            }
        }
    }
First step, remove that first else 

if (typeof response !== 'string') { 
    mode = edit; 
} else if (status.indexOf('Completed') !== -1) { 
    mode = display; 
} else if ((stage &lt;= isEditable) &amp;&amp; (code == 0 || code == 2)) { 
    mode = edit; 
} else { 
    mode = display; 
}


After this, your text and your code dont look the same to me... you need better variables or having methods:

var noResponse = typeof response !== 'string';
var statusIsNotCompleted = status.indexOf('Completed') !== -1;
var stageIsEditable = (stage &lt;= isEditable) &amp;&amp; (code == 0 || code == 2);
if (noResponse) { 
    mode = edit; 
} else if (statusIsNotCompleted) { 
    mode = display; 
} else if (stageIsEditable) { 
    mode = edit; 
} else { 
    mode = display; 
}


After this, is there an option in real life where putting else if (stageIsEditable) before else if (statusIsNotCompleted) make something not work? Otherwise, you could join them in a variable:

var yourThingIsEditable = noResponse ||  stageIsEditable;