Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jslint use '||' operator instead of conditional operator

I have jslint complaining me to use || operator for below code,

query = ['browser' + (ieVersion ? ieVersion : 'UNKNOWN')]

I tried using || operator but that ends up in wrong result,

query = ['browser' + ieVersion || 'UNKNOWN'] 
// => ['browserundefined']
like image 243
Mahesh Kulkarni Avatar asked Dec 18 '12 17:12

Mahesh Kulkarni


3 Answers

Operator precedence is wrong, try this:

query = ['browser' + (ieVersion || 'UNKNOWN')]

without extra parentheses + operator is stronger and JavaScript engine evaluates it as:

query = [('browser' + ieVersion) || 'UNKNOWN']

Notice that 'browser' + ieVersion is never falsy so you'll never see 'UNKNOWN'.

like image 91
Tomasz Nurkiewicz Avatar answered Nov 13 '22 14:11

Tomasz Nurkiewicz


brackets?

query = ['browser' + (ieVersion || 'UNKNOWN')]
like image 2
Halcyon Avatar answered Nov 13 '22 14:11

Halcyon


You need to wrap the expression in parentheses:

query = ['browser' + (ieVersion || 'UNKNOWN')]
like image 2
jevakallio Avatar answered Nov 13 '22 15:11

jevakallio