JavaScript變量
JavaScript變量標識符
標識符 var + 變量名稱來定義變量。
變量名稱以字母,下劃線_,美元$符號開頭,餘下字符可以是字母,數字,下劃線,美元符號。
eg: var name = 'hello';
var a1 = 'hello';
var _test = 'hello';
var $test = 'hello';
以上變量名稱均爲正確。
var 1a = 'hello'; //數字開頭錯誤。
JavaScript允許一次聲明多個變量。中間以逗號分隔。
eg: var a1 = 'hello1',a2 = 'hello2';
JavaScript大小寫敏感。
var a = 'hello1';
var A = 'hello2';
a和A是兩個不同的變量
function name(){}
function Name(){}
函數 name和Name是兩個不同的函數。
JavaScript是弱類型語言。
所謂弱類型語言即變量沒有固定類型,也無需明確類型。
相比於Java語言,定義一個變量必須要聲明其類型。
Java代碼
eg: String str = 'hello';
int num = 19;
JavaScript代碼
eg: var str = 'hello';
var num = 19;
JavaScript中的變量類型是根據其內容改變而改變的。
如上,變量str 就是一個字符串類型的變量,變量num是一個數字類型的變量。
這即是弱類型帶來的編程簡便好處,但同時也對初學者容易造成混淆。
變量的作用域
變量按照作用域劃分爲全局變量和局部變量。其區別在於生命週期。
局部變量一般聲明在函數內部,其使用範圍也是在其聲明的地方開始
到其所在的函數代碼塊結束。函數結束,其內部的局部變量註銷。
全局變量聲明在函數外部,其使用範圍從其生命的地方開始</script>
標籤結束,瀏覽器關閉,全局變量註銷。
eg1:
<script>
var a ;//全局變量a,任何地方都可以使用
function test1(){
var a = 12;//局部變量a
//只能在聲明他的地方開始到代碼塊結束之間使用。即test1中
}
function test2(){
alert(a); //全局變量a
}
</script>
除此以外對於沒有聲明過得變量在使用後,其將成爲全局變量。
eg2:
<script>
var aaa = 111;
qqq = aaa+222;
function test(){
alert(qqq);
}
test();
</script>
聲明 變量 aaa , 變量aaa + 222賦值給 從未聲明過的變量qqq,
發現qqq如正常變零可以使用並且qqq可以在函數內部使用,
可見其爲全局變量。
JavaScript原始值數據類型
在JavaScript中數據類分爲兩大類——原始值類型和引用值類型。
原始值數據類型與引用值數據類型其最大的區別在於存儲結構。
原始值類型存儲在棧中,其值直接存在變量訪問的地方。
引用值類型存儲在堆中,存儲在變零訪問出的是一個地址,指向內存裏的一小塊空間。
原始值類型中有5中數據類型。
Null,Undefined,string,Boolean,number
引用值類型中只用1種數據類型
Object
萬物皆爲對象,function,array,RegExp……
原始數據類型詳解
在詳解原始值數據類型之前先介紹運算一種特殊的運算符——typeof
typeof用來判斷變量的數據類型。
alert()函數,在瀏覽器中彈出,多用在js調試錯誤。
字符串類型——String
字符串由單引號或雙引號引起來。
字符串每個字符都有其特定的位置,第一個字符index是0。
eg:
<script>
var str = 'hello';
alert(typeof str);//string
alert(str.length);//5
alert(str.charAt(0));//h
</script>
數字類型——Number
可以表示32位的整數,也可以表示64位的浮點數。
可以表示爲八進制必須0開頭,也可以表示爲十六進制0開頭,後面接x字母。
科學計數法表示數字。
eg1:
var num1 = 12;
var num2 = 12.01;
alert(typeof num1);//Number
alert(typeof num2);//Number
eg2:
var num1 = 030 //等於十進制的24
var num2 = 0x1a //等於十進制的26
eg3:
var num1 = 2.13e6 //2.13*10的六次方。
布爾類型——Boolean
表示邏輯真與假。
定義時不可加引號。
true和false其值可以與0,1相等價。
eg:
<script>
var a = true;
alert(typeof a) //boolean
alert(a==1); //true
alert(a==0); //false
var a = 1;
alert(typeof a);//number
alert(a==true); //true
var b = 1;
alert(a==b) //true
</script>
Undefined類型
Undefined即未定義類型。其默認值爲Undefined。
對於不存在的變量或者變量未賦初始值都爲Undefined類型。
Undefined類型的默認值爲Undefined,但值Undefined不同於未定義的值。
eg:
<script>
var a ; //變量a沒有賦初始值,
alert(typeof a);//類型爲Undefined,
alert(a==undefined);//值爲undefined
alert(typeof c); //未定義的值c。
alert(c==a); //出錯,對c使用除typeof運算符的其它運算符都會出現錯誤
//因爲無法對一個不存在的變量進行運算
</script>
Null類型
表示空值,其默認值即null。
Null和Undefined
Undefined是從null中派生出來的。
Null的小問題 Null的typeof 是Object
在前面我們說Null爲原始值類型,引用值類型纔是對象。
但是null的typeof爲object是由於歷史原因所出現的bug,後來解釋null
爲對象的佔位符。
eg:
<script>
var a = null//變量a 有值,值爲null
alert(typeof a); //object
var b //變量b沒有值 nudefined
alert(a==b);//true
</script>
引用數據類型
引用數據類型只有一種即——對象。
借用java中的一句話,萬物皆爲對象,本節課暫不討論對象,
我們在後面的課程將會詳細介紹。引用類型。
變量命名規範
在前文中我們的變量名稱一直是隨意起名,爲了編程規範,我們的
變量名稱應當有意義。
以下介紹三種常見的命名規範。
駝峯命名法
首字母小寫,接下來的字母都大寫字符開頭
var myName = 'hello';
Pascal標記法
首字母大寫,接下來的字母都大寫字符開頭
var MyName = 'hello';
匈牙利命名法
前綴+接下來字母都大寫字符開頭
var sMyName = 'hello';
我們以後的課程將採用駝峯命名規範。
同時在命名的時候應當注意避免使用JavaScript保留字和關鍵字。
保留字和關鍵字爲JavaScript語言使用。
以下附部分保留字和關鍵字。
保留字:float
goto
implements
import
native
package
private
protected
……
關鍵字:
JavaScript關鍵字是保留的,不能用作變量名稱或函數名稱
var
in
if
break
do
for
如果把關鍵字用作變量名或函數名,
可能得到諸如 "Identifier Expected"(應該有標識符、期望標識符)
這樣的錯誤消息
限於文章篇幅原因,這裏僅僅介紹冰山一角。由於筆者的水平有限,編寫時間也很倉促,
文中難免會出現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正
說在最後的話:
本博會開一個JS專欄,長期更新,由淺入深帶大家系統的學習JavaScript,做出多彩的JS特效。
如果對你有用就關注一下吧。