最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解JavaScript中的傳值與傳引用

 更新時(shí)間:2013年12月09日 10:21:21   作者:  
這篇文章主要是對(duì)JavaScript中的傳值與傳引用進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助

1.傳值(by value)

變量的值被復(fù)制出一份,與原來(lái)的值將不相干,也就是說(shuō)即使新的值被修改,原來(lái)的值也不會(huì)改變,在JavaScript中基本類(lèi)型都是傳值的.

復(fù)制代碼 代碼如下:

function testPassValue()
{
   var m=1;
   var n=2;
   //將m,n的值復(fù)制一份,傳遞到passValue
   passValue(m,n);
   alert(m);  //將是原有的值
}
function passValue(a,b)
{
  a = a+b; //改變a的值,這里a只是原有值的一份copy
  alert(a); 
}

輸出結(jié)果:
3

1

2.傳引用(by reference).

引用本身復(fù)制一份傳給function,引用指向的對(duì)象并沒(méi)有被復(fù)制傳遞(java中也是如此),在function中,如果改變了對(duì)象的屬性的值,由于和原來(lái)的引用指向的是同一個(gè)對(duì)象,因此在通過(guò)原來(lái)的引用訪(fǎng)問(wèn)到的將是修改過(guò)的值;

但是如果只是在function中將引用指向一個(gè)新的對(duì)象,將不會(huì)改變?cè)瓕?duì)象的值,改變的只是復(fù)制的這一份引用.

復(fù)制代碼 代碼如下:

function testPassValue()
{
  var date = new Date(2006,02,27);
  alert(date.getDate());  //輸出為 27
  //將date引用本身復(fù)制一份,傳遞到passReference,注意date所指向的對(duì)象并沒(méi)有被復(fù)制
  passReference(date);
  alert(date.getDate());  //輸出為12
  //同上
  changeReference(date);
  alert(date.getDate());  //輸出還為12
}
function passReference(da)
{
 //由于da和原引用指向的是同一個(gè)對(duì)象,在function外,通過(guò)原有的引用訪(fǎng)問(wèn)到的將是對(duì)象的日期屬性值,將是修改之后的值.
   da.setDate(12);
}
function changeReference(da)
{
   //此時(shí)da引用實(shí)際上是原引用的一份copy,將引用本身重新賦值,將不會(huì)影響原引用
   da= new Date(2007,05,11);

//將da引用指向一個(gè)新的對(duì)象,此時(shí)原引用指向的還是原來(lái)的對(duì)象
   alert(da.getDate());     // 輸出為11
}


3 特殊的String 

在JavaScript中,String也傳引用的. js中只有charAt方法,而沒(méi)有對(duì)應(yīng)的修改方法,和java中的String相同,都具有不變性.

復(fù)制代碼 代碼如下:

var s1 = "hello";
var s2 = "hell" + "o";
if (s1 == s2)  
alert("s1 = s2");  //這句會(huì)不會(huì)執(zhí)行? java用的熟的人可能會(huì)認(rèn)為不會(huì)執(zhí)行(這句話(huà)我頗有微詞,java中也是會(huì)執(zhí)行的!),因?yàn)閖ava中的==比較的是同一性. 事實(shí)上在js中對(duì)String==比較的是值是否相等,所以這句話(huà)會(huì)執(zhí)行. 但是對(duì)其他的Object == 比較和java中一樣是同一性.

相關(guān)文章

最新評(píng)論

高陵县| 普宁市| 长春市| 密山市| 灵寿县| 定边县| 新疆| 斗六市| 得荣县| 丰城市| 五寨县| 秭归县| 仪征市| 巫山县| 边坝县| 姚安县| 拜泉县| 蛟河市| 大关县| 灵寿县| 财经| 崇阳县| 瑞金市| 商南县| 左权县| 沾益县| 彭山县| 小金县| 丘北县| 临夏县| 五家渠市| 北票市| 行唐县| 原阳县| 水富县| 乡宁县| 临桂县| 蓝田县| 大庆市| 陈巴尔虎旗| 灵山县|