Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #8420

Re: "" + some form value

From "Richard Cornford" <Richard@litotes.demon.co.uk>
Newsgroups comp.lang.javascript
References <fuodc799nhk0c9ofihe817rjtkjid2cq79@4ax.com>
Subject Re: "" + some form value
Date 2011-11-19 03:17 +0000
Message-ID <65Odne1L8P9dglrTnZ2dnUVZ8uydnZ2d@giganews.com> (permalink)

Show all headers | View raw


Gene Wirchenko wrote:
> Dear JavaScripters:
>
>     What does "" + some form value do?  For example,

The addition operator does string concatenation if either of its 
argument is a string primitive, as in this case. However, when it does 
string concatenation and non-string argument (the right hand side in 
this case) is type-converted into a string primitive (by applying the 
language's type conversion rules). It is this type-conversion that 
usually motivates the concatenation of an empty string, that is, the 
result is just the result of type converting the right hand side into a 
string primitive, as concatenating an empty string has no effect on that 
result.

>          ""+document.Contest.Last.value

Assuming that - document.Contest.Last.value - if a reference to the - 
value - property of a form element then the concatenation is actually 
worthless as such - value - property values are already string 
primitives. Unfortunately forced type-conversion methods often ends up 
being applied as a mystical incantation, and so in contexts where they 
actually have no effect.

Incidentally, to force type conversion to a string primitive the String 
constructor can be used without the - new - operator, as in:-

String(document.Contest.Last.value)

- Which has been both recommended against on the grounds that it could 
be confused with a miss-typed - new String(s); - and recommended as a 
self-documenting and explicit means of forcing type-conversion to a 
string. I am leaning towards the latter. Concatenating the empty string 
has been shown to be the most runtime efficient type-conversion to 
string primitive operation.

> Won't document.Contest.Last.value be string regardless?

Yep.

> I tried forcing one such to a number,

How? Strings can be type-converted into number primitive values using, 
say,  +string  or  Number(string)  (and commonly in the past or 
string*1 , or  string-0 ).


> and after the assignment, typeof()
> reported it was a string.
>
>     Is this ""+ a bit of superstition, or am I missing something?

No, it appears to be superstition in this case. Though there is a slight 
possibility that - document.Contest.Last - was not referring to a form 
element in this case (then you only have evidence of poor code design 
rather than a mystical incantation).

Richard. 

Back to comp.lang.javascript | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

"" + some form value Gene Wirchenko <genew@ocis.net> - 2011-11-18 15:07 -0800
  Re: "" + some form value "Richard Cornford" <Richard@litotes.demon.co.uk> - 2011-11-19 03:17 +0000
    Re: "" + some form value Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-11-19 17:09 +0100
    Re: "" + some form value Gene Wirchenko <genew@ocis.net> - 2011-11-20 00:07 -0800
  Re: "" + some form value Dr J R Stockton <reply1146@merlyn.demon.co.uk> - 2011-11-19 18:53 +0000

csiph-web