javascript
javascript的变量
1.javascript的變量是無類型的(untype)。
2.用var聲明的變量是永久性的。所以當(dāng)你試圖用delete來刪除其聲明的變量時(shí)會(huì)報(bào)錯(cuò)。
3.當(dāng)試圖讀取一個(gè)未聲明的變量時(shí),會(huì)報(bào)錯(cuò)。
4.當(dāng)給一個(gè)未用var聲明的變量賦值時(shí),js會(huì)隱式的聲明該變量(這個(gè)變量會(huì)被聲明為全局變量,所以最好用var來聲明。這一點(diǎn)在局部聲明時(shí)非常重要)。
5.在函數(shù)內(nèi)部,局部變量的優(yōu)先級(jí)要高于同名的全局變量(相當(dāng)于隱藏了該同名的全局變量)。
結(jié)合4,5兩點(diǎn)。我們給出一個(gè)列子來說明其重要性。
var part = "global"; //聲明一個(gè)全局變量
function checkpart()
{
var part = "local"; //聲明一個(gè)局部變量
document.write(part);
}
checkpart(); //輸出local
document.write(part); // 輸出global
當(dāng)你在聲明part局部變量時(shí)省略了var。這就相當(dāng)于聲明了一個(gè)全局變量,即改變了全局變量part的值。下面的兩條語句輸出的都是local。
?
6.沒有塊級(jí)作用域。函數(shù)中聲明所有變量(無論在哪里聲明的),在整個(gè)函數(shù)中他都是有定義的。
var part = "global";
function checkvariable()
{
document.write(part);
}
checkvariable(); //輸出global
?
var part = "global";
function checkvariable()
{
documen.write(part);
var part = "local";
document.write(part);
}
checkvariable();
上述代碼第一次輸出的不是global,而是undefined。這告訴我們?cè)诤瘮?shù)中聲明變量時(shí)盡量將其集中放在函數(shù)的開頭。
?
7.變量的內(nèi)容
js中數(shù)據(jù)類型分為兩組:基本數(shù)據(jù)類型和引用類型。數(shù)值,布爾值,null和未定義的值屬于基本類型。對(duì)象,數(shù)組,函數(shù)屬于引用類型(函數(shù)也是一種數(shù)據(jù)類型)。(字符串屬于特殊類型)。基本數(shù)據(jù)類型在內(nèi)存中具有固定的大小:一個(gè)數(shù)值占8個(gè)字節(jié)(在基本類型中最大),一個(gè)布爾值占一位。而引用類型具有任意長(zhǎng)度,沒有固定的大小。無法將其直接與每個(gè)相關(guān)變量?jī)?chǔ)存在8個(gè)字節(jié)的內(nèi)存中。所以變量?jī)?chǔ)存的是這個(gè)值的引用(通常引用有兩種形式:指針和內(nèi)存地址)。這兩中數(shù)據(jù)類型具有很大的差別。
var i = 1;
var j = i;
i = 2;
alert(j); //輸出1
?
var i = new Array(1,2,3);
j = i;
i[0] = 2;
alert(j); //輸出2,2,3
?
?
8.作為屬性的變量
js解釋器在工作之前會(huì)在所有js代碼運(yùn)行之前創(chuàng)建一個(gè)全局對(duì)象。這個(gè)全局對(duì)象的屬性就是所有的全局變量。同理也會(huì)存在一個(gè)調(diào)用對(duì)象。而這個(gè)調(diào)用對(duì)象的屬性就是所有的局部變量。一個(gè)js解釋器可以工作在不同的執(zhí)行環(huán)境中。這些執(zhí)行環(huán)境彼此獨(dú)立且又相互聯(lián)系。(執(zhí)行環(huán)境:不同的窗口,框架)。
轉(zhuǎn)載于:https://www.cnblogs.com/chris-oil/archive/2013/05/19/3087425.html
總結(jié)
以上是生活随笔為你收集整理的javascript的变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读取 XML 数据时,超出最大字符串内容
- 下一篇: Dao层系列-4-Hibernate S