This considers you do not have the numbers 0 or 1 in the arrays:
var arr1 = [123, 456, 789,3],
arr2 = [123, 456, 789, 098],
has = {},
different=[],
length1=arr1.length,
length2=arr2.length;
for(var i=0;i<length1;i++){
has[arr1[i]]=true;
}
for(var i=0;i<length2;i++){
var val=arr2[i];
if(has[val] === undefined){
has[val]=val;
}
else{
if(has[val]!=val){
has[val]=false;
}
}
}
for(var i in has){
if (has[i]) different.push(i);
}
If you want to check also for 0 and 1:
for(var i=0;i<length1;i++){
has[arr1[i]]=NaN;
}
for(var i=0;i<length2;i++){
var val=arr2[i];
if(has[val] === undefined){
has[val]=null;
}
else{
if(has[val]!=null){
has[val]=true;
}
}
}
for(var i in has){
if (!has[i]) different.push(i);
}