you didn't catch if app.screen and app.location both are string without number, so you need check if it is number or undefined on first round:
```javascript
// round 1: throw exception if we got 'object', 'string' or others
if (typeof app.screen !==  'undefined' && typeof app.scren !== 'number') {
 //exception
}
// round 2: we only accept if both are 'number' or both are 'undefined'
if (typeof app.screen !== typeof app.location) {
  //exception
}
```

and there are some experiment for you reference:
```
$ node
> if(isNaN(parseInt(0)) ^ isNaN(parseInt('test'))) { console.log('exception');} else {console.log('pass');}
exception
> if(isNaN(parseInt('test')) ^ isNaN(parseInt('test'))) { console.log('exception');} else {console.log('pass');}
pass
> if(isNaN(parseInt(undefined)) ^ isNaN(parseInt(0))) { console.log('exception');} else {console.log('pass');}
exception
> if(isNaN(parseInt(undefined)) ^ isNaN(parseInt(undefined))) { console.log('exception');} else {console.log('pass');}
pass
> if(isNaN(parseInt(undefined)) ^ isNaN(parseInt(0))) { console.log('exception');} else {console.log('pass');}
exception
> isNaN(undefined)
true
> isNaN('test')
true
> typeof 1
'number'
> typeof undefined
'undefined'
> typeof null
'object'
> typeof 'test'
'string'
```