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


Groups > comp.lang.javascript > #13013

Re: call by reference

From BGB <cr88192@hotmail.com>
Newsgroups comp.lang.javascript
Subject Re: call by reference
Date 2012-03-23 13:03 -0700
Organization albasani.net
Message-ID <jkil11$8m4$1@news.albasani.net> (permalink)
References <jkhrtr$i06$1@news.albasani.net>

Show all headers | View raw


On 3/23/2012 5:56 AM, Andreas Bergmaier wrote:
> I know, JavaScript does not support call-by-reference. Every function
> invocation does call-by-value, even if that value is a reference value
> to an array-/function-/plain-Object, and not a primitive.
>
> Yet, there is a javascript thing that stores values by reference: the
> arguments object.
>
>  > function kill(a) { for (var i=0;i<a.length;i++) a[i]=false; }
>  > function x(a,b,c) { kill(arguments); return[a,b,c] };
>  > x(true,true,true)
> [false, false, false]
>
> I did not assign to a, b or c. Can this be termed "call-with-references"
> or something?
>

one option: "call by value" with "reference types".



although not proper JS, my own ES-variant (used mostly for game 
scripting) partly adds references as a language extension:
foo(&x, &y);

which may be handled at the target either as:
function foo(rx, ry)
	{ *rx=3; *ry=4; }
or, as:
function foo(&x, &y)
	{ x=3; y=4; }
which is basically syntax sugar for the above.

functionally "*rx=3;" is more-or-less equivalent to "rx[0]=3;".

note: although vaguely resembling them, these are not to be confused 
with C-style pointers (functionally, the reference is "boxed", and 
deferred assignment is made into this box).

as-is, the "&x" notation at the call-site is mandatory, given that the 
compiler doesn't necessarily know the signature of the call target 
(otherwise, things wont work correctly).


or such...

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


Thread

call by reference Andreas Bergmaier <andber93@web.de> - 2012-03-23 13:56 +0100
  Re: call by reference Scott Sauyet <scott.sauyet@gmail.com> - 2012-03-23 07:10 -0700
  Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-23 15:23 +0000
    Re: call by reference Scott Sauyet <scott.sauyet@gmail.com> - 2012-03-23 09:28 -0700
      Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-23 19:41 +0000
        Re: call by reference Gene Wirchenko <genew@ocis.net> - 2012-03-23 13:43 -0700
          Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-23 21:18 +0000
            Re: call by reference BGB <cr88192@hotmail.com> - 2012-03-23 15:23 -0700
            Re: call by reference Gene Wirchenko <genew@ocis.net> - 2012-03-23 15:27 -0700
              Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-24 00:19 +0000
                Re: call by reference Norman Peelman <npeelmandog@cfl.rr.com> - 2012-03-28 06:43 -0400
                Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-28 14:50 +0000
                Re: call by reference Aatu Koskensilta <aatu.koskensilta@uta.fi> - 2012-03-28 18:06 +0300
                Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-28 15:57 +0000
                Re: call by reference Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2012-03-28 23:22 +0200
                Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-29 07:18 +0000
                Re: call by reference Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2012-03-29 13:34 +0200
                Re: call by reference David Mark <dmark.cinsoft@gmail.com> - 2012-03-29 18:30 -0700
                Re: call by reference Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2012-04-03 00:09 +0200
                Re: call by reference David Mark <dmark.cinsoft@gmail.com> - 2012-04-02 17:43 -0700
                Re: call by reference Robert Baer <robertbaer@localnet.com> - 2012-03-30 00:49 -0800
                Re: call by reference Scott Sauyet <scott.sauyet@gmail.com> - 2012-03-28 13:33 -0700
              Re: call by reference John G Harris <john@nospam.demon.co.uk> - 2012-03-24 11:34 +0000
            Re: call by reference Aatu Koskensilta <aatu.koskensilta@uta.fi> - 2012-03-26 22:46 +0300
              Re: call by reference Gene Wirchenko <genew@ocis.net> - 2012-03-26 18:38 -0700
                Re: call by reference Aatu Koskensilta <aatu.koskensilta@uta.fi> - 2012-03-27 05:13 +0300
                Re: call by reference Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-03-27 18:31 +0200
                Re: call by reference Aatu Koskensilta <aatu.koskensilta@uta.fi> - 2012-03-27 21:31 +0300
                Re: call by reference Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-03-27 21:03 +0200
                Re: call by reference "Ross A. Finlayson" <ross.finlayson@gmail.com> - 2012-04-10 22:03 -0700
        Re: call by reference Scott Sauyet <scott.sauyet@gmail.com> - 2012-03-25 07:34 -0700
          Re: call by reference "Evertjan." <exjxw.hannivoort@interxnl.net> - 2012-03-25 15:53 +0000
    Re: call by reference Asen Bozhilov <asen.bozhilov@gmail.com> - 2012-03-27 05:15 -0700
  Re: call by reference BGB <cr88192@hotmail.com> - 2012-03-23 13:03 -0700
  Re: call by reference Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-03-23 23:02 +0100
    Re: call by reference John G Harris <john@nospam.demon.co.uk> - 2012-03-24 11:40 +0000

csiph-web