JavaScript基礎篇之變數範圍、傳值、傳址的簡單介紹與執行個體

來源:互聯網
上載者:User

javascript:變數的聲明
以下是幾種聲明變數的方式

複製代碼 代碼如下: var value;
 var value,value1,value2;//同時聲明多個變數,但是這些變數的值都是undefined
 var i = 0,j = 0,k=100;//變數聲明,初始化一體。
 //如果大家嘗試讀一個不存在的變數(值)會報錯!但是嘗試給一個未使用Var聲明的變數賦值,javascript
 //會隱式的聲明改變數,而且聲明了的變數還是全域的。細節:所以大家建立變數都盡量使用Var
 //變數的範圍(這個問題也容易出,大家要搞明白)

javascript:變數的範圍
 這些都是細節,和我一樣初學的一定要注意避免!複製代碼 代碼如下:var golbal = "golbal"; //全域變數
 var local ="local";
function area()
 {
//局部變數的優先順序比全域變數的高
var local = "arealocal"
//當函數體內聲明的變數名和全域變數名相同時,javascript 會隱藏全域變數
var golbal ="areagolbal";

document.write("local is :"+local + "and golbal is :" + golbal +"<br />");
 }

area();
//輸出:local is :arealocaland golbal is :areagolbal

在嵌套的函數裡面定義局部變數,效果會怎麼樣呢?看下面:複製代碼 代碼如下:var hope = "moremoney";
function createmore()
{
var hope = "have more money";//局部
function createmoreto()//嵌套函數
{
var hope = "have more money to much";//局部
document.write("Createmoreto hope is :"+hope +"<br />");
  //輸出:Createmoreto hope is :have more money to much
}
 createmoreto();//調用
 document.write("Createmore hope is :" +hope +"<br />");
//輸出:Createmore hope is :have more money
}
 createmore(); //調用

javascript:傳值和傳址
這裡也是比較重要的概念!不要漏了。

  傳值 傳址
複製 實際複製的值,存在不同的、獨立的拷貝。 複製的只是對數位引用。如果通過這個新的引用修改了數值,這個改變對最初的引用來說也是可見的。
傳遞 傳遞給函數的是值的獨立拷貝對它的改變在函數外沒有影響 傳遞給函數的是對數值的引用,如果函數通過傳遞給它的引用修改了數值,這個改變也是可見的。
比較 比較這兩個對立的值,通常逐位元組的比較,以判斷是否相等 比較的是兩個引用,以判斷它們引用的是否是同一個數值。

javascript:基本類型和參考型別

javascript的基本規則是:基本類型通過傳值來操作,參考型別通過傳址來操作。(什麼事實值型別,或者什麼事引用看我上一篇)
按值傳遞

複製代碼 代碼如下: var value = 1;
 var copyvalue = value; //將value賦給另一個變數
  function addTotal(total,arg)
  {
 total+= arg; //total = total + arg 效果等同
 }
 //調用函數,傳兩個參數(大家可能會認為這個函數改變了全域變數的值,其實沒有,函數用的也是對立拷貝)
 addTotal(value,copyvalue);
 if(value == 1) copyvalue = 2;
 document.write("total \t" + value + "and copyvalue \t\t" + copyvalue+"<br />");
 //最後輸出:total 1and copyvalue 2

按址傳遞
複製代碼 代碼如下: var array = new Array("Javascccp");
 var objarray = array;
 function modifyArray(arr)
 {
 arr[0] = "JAVASCRIPT";
 }
 //沒調用函數前
 document.write(array[0] +"<br />");
 //輸出Javascccp;
 //調用函數後
 modifyArray(array);
 document.write(array[0]+"<br />");
 //輸出大寫JAVASCRIPT
 //通過修改objarray會是一樣的效果
 objarray[0] = "Frank";
 document.write(array[0]+"<br />");
  //輸出Frank;

小結:上面內容希望大家都不要錯過,對學習後面的知識還是很有協助的!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.