//基礎資料型別 (Elementary Data Type),數字,布爾var i = 10;var b = true;function ischange_basic(num, bool){ num = 15; bool = false; document.write("<br />inner : i=" + num + " b=" + bool);}document.write("basic type test<br />");document.write("before: i=" + i + " b=" + b);ischange_basic(i, b);document.write("<br />after : i=" + i + " b=" + b);//對象型:函數、數字、對象var i = [10, 20];var b = {a:10, b:"123", c:true};function ischange_obj(num, bool){ num[0] = 15; num[1] = "abc"; bool.a = 15; bool.b = "abc"; bool.c = false; }document.write("<br /><br />object type test<br />");document.write("before: i=[" + i[0] +","+i[1] + "], b={" + b.a +","+ b.b +","+ b.c +"}");ischange_obj(i, b);document.write("<br />after : i=[" + i[0] + "," + i[1] + "], b={" + b.a +","+ b.b +","+b .c +"}");//字串var i = "123";function ischange_char(str){ str = "abc";}document.write(["<br /><br />string test<br/>before:i=", i, "<br />"].join(''));ischange_char(i);document.write(["after:i=", i].join(''));
/////////////////////////////////////////////////////////////////////////////////////result
basic type test
before: i=10 b=true
inner : i=15 b=false
after : i=10 b=true
object type test
before: i=[10,20], b={10,123,true}
after : i=[15,abc], b={15,abc,false}
string test
before:i=123
after:i=123
結論:基本類型傳值(一份拷貝),字串傳遞中也是;
物件類型(函數、數組)傳址(引用),直接對變數操作。