"" + some form value

Discussion in 'Javascript' started by Gene Wirchenko, Nov 18, 2011.

  1. Dear JavaScripters:

    What does "" + some form value do? For example,
    ""+document.Contest.Last.value
    Won't document.Contest.Last.value be string regardless? I tried
    forcing one such to a number, and after the assignment, typeof()
    reported it was a string.

    Is this ""+ a bit of superstition, or am I missing something?

    Sincerely,

    Gene Wirchenko
     
    Gene Wirchenko, Nov 18, 2011
    #1
    1. Advertising

  2. Richard Cornford wrote:

    > Gene Wirchenko wrote:
    >> Dear JavaScripters:
    >>
    >> What does "" + some form value do? For example,
    >> ""+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.


    There is no consensus on what is most runtime-efficient here. In fact, the
    results at <http://jsperf.com/string-conversion-speed> vary so much between
    implementations, runtime environments, and even consecutive tests in the
    very same runtime environment, and String() is indeed self-documenting, that
    I am going to keep my original, ECMAScript-supported approach¹ of using
    String() when I do not know the type of the value and if it(s object
    representation) has a toString() method.


    PointedEars
    ___________
    ¹) the `+' operator requires more algorithmic steps for the type conversion
    than String()
    --
    Prototype.js was written by people who don't know javascript for people
    who don't know javascript. People who don't know javascript are not
    the best source of advice on designing systems that use javascript.
    -- Richard Cornford, cljs, <f806at$ail$1$>
     
    Thomas 'PointedEars' Lahn, Nov 19, 2011
    #2
    1. Advertising

  3. In comp.lang.javascript message <fuodc799nhk0c9ofihe817rjtkjid2cq79@4ax.
    com>, Fri, 18 Nov 2011 15:07:56, Gene Wirchenko <> posted:

    > What does "" + some form value do? For example,
    > ""+document.Contest.Last.value
    >Won't document.Contest.Last.value be string regardless?


    Not inevitably.

    document.Contest = {} ;
    document.Contest.Last = {} ;
    document.Contest.Last.value = new Date() ;
    99 ;
    document.Contest.Last.value.getHours() ;

    gives me 18 (YMMV)

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


    It ensures a string value; for example, this

    var U ; typeof ( ''+U) // gives 'string'
    typeof (+''+U) // gives 'number'
    typeof (''+ +U) // gives 'string'

    Some coders find it easier to force a string rather than to become
    confident that it is and always will be inevitably a string already.

    --
    (c) John Stockton, nr London, UK. ?@merlyn.demon.co.uk Turnpike v6.05.
    Website <http://www.merlyn.demon.co.uk/> - w. FAQish topics, links, acronyms
    PAS EXE etc. : <http://www.merlyn.demon.co.uk/programs/> - see in 00index.htm
    Dates - miscdate.htm estrdate.htm js-dates.htm pas-time.htm critdate.htm etc.
     
    Dr J R Stockton, Nov 19, 2011
    #3
  4. On Sat, 19 Nov 2011 03:17:21 -0000, "Richard Cornford"
    <> wrote:

    >Gene Wirchenko wrote:


    [snip]

    >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


    I think I will, too.

    >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 ).


    With an assignment statement. The following statement was an
    alert() to get the typeof() and reported string.

    [snip]

    >> 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).


    No, definitely a form element. That is why I was puzzled about
    it.

    Sincerely,

    Gene Wirchenko
     
    Gene Wirchenko, Nov 20, 2011
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Li Zhang
    Replies:
    4
    Views:
    6,122
    softip
    Feb 27, 2009
  2. Peter

    some value , some reference

    Peter, Oct 10, 2003, in forum: Java
    Replies:
    15
    Views:
    556
    Michael Borgwardt
    Oct 14, 2003
  3. Iceman
    Replies:
    1
    Views:
    448
    Steve Pugh
    Jan 7, 2004
  4. Guest
    Replies:
    2
    Views:
    158
    Bob Barrows [MVP]
    Feb 20, 2006
  5. Matt Herson
    Replies:
    8
    Views:
    389
    Matt Herson
    Sep 30, 2003
Loading...

Share This Page