• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. JavaScript中的傳值與傳引用的理解

        時間:2024-10-12 06:06:58 JavaScript 我要投稿
        • 相關推薦

        關于JavaScript中的傳值與傳引用的理解

          1.傳值(by value)

          變量的值被復制出一份,與原來的值將不相干,也就是說即使新的值被修改,原來的值也不會改變,在JavaScript中基本類型都是傳值的.

          復制代碼 代碼如下:

          function testPassValue()

          {

          var m=1;

          var n=2;

          //將m,n的值復制一份,傳遞到passValue

          passValue(m,n);

          alert(m); //將是原有的值

          }

          function passValue(a,b)

          {

          a = a+b; //改變a的值,這里a只是原有值的一份copy

          alert(a);

          }

          輸出結果:

          3

          1

          2.傳引用(by reference).

          引用本身復制一份傳給function,引用指向的對象并沒有被復制傳遞(java中也是如此),在function中,如果改變了對象的屬性的值,由于和原來的引用指向的是同一個對象,因此在通過原來的引用訪問到的將是修改過的值;

          但是如果只是在function中將引用指向一個新的對象,將不會改變原對象的值,改變的只是復制的這一份引用.

          復制代碼 代碼如下:

          function testPassValue()

          {

          var date = new Date(2006,02,27);

          alert(date.getDate()); //輸出為 27

          //將date引用本身復制一份,傳遞到passReference,注意date所指向的對象并沒有被復制

          passReference(date);

          alert(date.getDate()); //輸出為12

          //同上

          changeReference(date);

          alert(date.getDate()); //輸出還為12

          }

          function passReference(da)

          {

          //由于da和原引用指向的是同一個對象,在function外,通過原有的引用訪問到的將是對象的日期屬性值,將是修改之后的值.

          da.setDate(12);

          }

          function changeReference(da)

          {

          //此時da引用實際上是原引用的一份copy,將引用本身重新賦值,將不會影響原引用

          da= new Date(2007,05,11);

          //將da引用指向一個新的對象,此時原引用指向的還是原來的對象

          alert(da.getDate()); // 輸出為11

          }

          3 特殊的String

          在JavaScript中,String也傳引用的. js中只有charAt方法,而沒有對應的修改方法,和java中的String相同,都具有不變性.

          復制代碼 代碼如下:

          var s1 = "hello";

          var s2 = "hell" + "o";

          if (s1 == s2)

          alert("s1 = s2"); //這句會不會執行? java用的熟的人可能會認為不會執行(這句話我頗有微詞,java中也是會執行的!),因為java中的==比較的是同一性. 事實上在js中對String==比較的是值是否相等,所以這句話會執行. 但是對其他的Object == 比較和java中一樣是同一性.

        【JavaScript中的傳值與傳引用的理解】相關文章:

        Java方法(函數)傳值和傳引用的問題10-07

        對javascript的理解08-08

        javascript面向對象中的對象怎么理解09-02

        淺談javascript中的單線程理解08-16

        有關深入理解JavaScript中的并行處理的介紹10-14

        理解JavaScript原型鏈教程09-02

        javascript的閉包概念怎么理解06-15

        JavaScript中的with關鍵字07-24

        在Java中執行JavaScript代碼07-14

        Javascript中typeof 用法歸納09-27

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲精品在看在线观看高清91 | 亚洲人成伊人成综合网久久久 | 在线免费午夜国产网站 | 一区二区三区四区视频在线 | 熟女制服丝袜另类中文字幕 | 亚洲成a人片在线观看国 |