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


Groups > comp.lang.javascript > #13083

Re: call by reference

From Asen Bozhilov <asen.bozhilov@gmail.com>
Newsgroups comp.lang.javascript
Subject Re: call by reference
Date 2012-03-27 05:15 -0700
Organization http://groups.google.com
Message-ID <16809571.1415.1332850535967.JavaMail.geo-discussion-forums@vbex14> (permalink)
References <jkhrtr$i06$1@news.albasani.net> <XnsA01FA6D1ADCF9eejj99@194.109.133.133>

Show all headers | View raw


Evertjan:

> JavaScript DOES support call-by-reference.
> 
> All objects are called by reference:

This is long discussed topic. Your terminology even and it is not correct seems more closer to the point. JavaScript uses the evaluation strategy called "Call by sharing". 
<URL: http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing> 

It is often mistaken with  "Call by reference", but it slightly differ: 

"The semantics of call-by-sharing differ from call-by-reference in that assignments to function arguments within the function aren't visible to the caller (unlike by-reference semantics)[citation needed], so e.g. if a variable was passed, it is not possible to simulate an assignment on that variable in the caller's scope. However since the function has access to the same object as the caller (no copy is made), mutations to those objects, if the objects are mutable, within the function are visible to the caller, which may appear to differ from call-by-value semantics."   

 
> <script type='text/javascript'>
> 
> var myObj = {};
> 
> myObj.myValue = 7;
> alert(myObj.myValue); // 7
> 
> function f(a) {
>   a.myValue = 33;
> };
> 
> f(myObj);
> alert(myObj.myValue); // 33
> 
> </script>

It does not prove your point. 

function f(o) {
    o.foo = 10;
    o = {foo : 0};
}

var obj = {foo : 5};
f(obj);

print(obj.foo); //10

This example shows that JavaScript does not use "Call by reference" if it used the value of `foo` would be 0 instead. The example shows "Call by sharing" strategy. 

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