[thelist] JS: compound ternary

liorean liorean at f2o.org
Fri Jan 30 15:59:24 CST 2004

Tom Dell'Aringa wrote:
> Hey JS people,
> I'm trying to build a compound ternary statement and I keep falling
> flat on my face. I know I have something mixed up, I keep getting a
> syntax error. There's a bracket set missing or something. Here's the
> statement:
> var restrict = (document.getElementById) ?
> document.getElementById(oName) : (document.all) ? document.all[oName]
> : return;
> The first condition should check for get by ID, next doc.all. If its
> not either it should return, otherwise is should set the correct
> object reference. I know you can do this I've seen it many times, I
> just can't find an example when I need it (as usual).

Operators - including the conditional* operator - operate on 
expressions. Expressions execute in context and always returns a value, 
and returns the execution  to the context they were called in. Return is 
a statement. Statements are executed in a context, but are context 
independent. They never return a value and does not always return 
execution to the context in which they were run.

Because of this, you may never place a statement in a place where you 
expect an expression, while you may always place an expression where you 
expect a statement.

(Ternary only tell you how many expressions it operates on. Conditional 
is the name of it. The only reason you get away with calling it the 
ternary operator is that it's the only ternary operator in JavaScript.)

liorean <mailto:liorean at user.bip.net>

ViewStyles, ViewScripts, ToggleStyles and GraphicsInfo bookmarklets and 
Theme Switcher, Cookies Handler scripts:

More information about the thelist mailing list