u936293
u936293

Reputation: 16232

Space concatenated with an expression is sometimes dropped

JSFiddle contains:

var d = " " + true ? "am" : "pm";
var e = " " + "am";
alert("|" + d + "|");
alert("|" + e + "|");

Why does d not contain the leading space?

Upvotes: 0

Views: 38

Answers (4)

aslantorret
aslantorret

Reputation: 303

You are trying to do same like var d = (" " + true) ? "am" : "pm" In your case the condition is " " + true. Correct condition is var d = (true ? "am" : "pm")

var d = " " + true ? "am" : "pm";   //output    |am|
var d = (" " + true) ? "am" : "pm";   //output  |am|
var d = " " + (true ? "am" : "pm");   //output  | am|

Upvotes: 1

user1531038
user1531038

Reputation: 266

" " + true evaluates to boolean.. you need

var d = " " + (true ? "am" : "pm");

Upvotes: 1

Check the edit here.

The javascript order of operations is computing " " + true before the ternary operator.

Upvotes: 1

Conan
Conan

Reputation: 690

you want var d = " " + (true ? "am" : "pm")

Upvotes: 2

Related Questions