其實對于學過C語言的同學來說,學習其他語言還是比較容易的,因為C是經典的程式設計語言,許多後來的語言都是借鑒了C語言的寫法,Javascript同樣也是如此。
這個很好了解,javascript中一切都是區分大小寫,包括變量,函數名,操作符。例:var a=0和var A=1不是同一個變量。
辨別符就是變量、函數、屬性的名字,這個也和其它的語言差不多。
第一個字元必須是字母、數字和下劃線或者一個$
其它随便了,數字、字母、下劃線、$都行
同樣是C語言的風格,單行注釋和塊級注釋。
// 單行注釋以兩個斜杠開頭
/*
*塊級注釋一個斜杠和一個星号開頭,一個星号和一個斜杠結尾
*/
ECMAScript的語句是以一個分号結尾的,不寫分号的話,解析器會确定結尾,在這裡我們記住必須每一個語句必須以分号結尾就好了,如果想javascript語句具有較好的可讀性的話就用C語言那一套就好了。例如,條件控制語句if,即使後面隻有一條語句也要使用花括号。
關鍵字和保留字就是系統自己使用的或者以後可能會使用的有特殊用途的字元,我們不能自己聲明和使用這些辨別符了。
關鍵字

保留字
上述的關鍵字和保留字可能不是很全,其實我們也不必記住這些東西,大概知道就行。假如我們真的忘記了這些特殊的辨別符,在應用中使用它聲明了變量什麼的,記住報什麼錯誤,找到它改了就ok了,如果把關鍵字用作變量名或函數名,可能得到諸如 "Identifier Expected"(應該有辨別符、期望辨別符)這樣的錯誤消息。
例子:chrome
IE
除了正常運作模式,ECMAscript 5添加了第二種運作模式:嚴格模式(strict mode),使得Javascript在更嚴格的條件下運作。由于javascript是松散型語言,有些地方肯定沒有嚴格的限制,引入這種模式就是為了使javascript更加的嚴格,規範,安全。使用嚴格模式有兩種方式:
要想在整個腳本中啟用嚴格模式,則需要在頂部加上代碼
要想一個函數在嚴格模式下執行則需在函數内部的頂部加上代碼
javascript的變量是松散類型的,也就是說一個變量可以存任何類型的資料,這在C語言中是不允許的,《javascript進階程式設計》中說每個變量隻是存儲一個值的占位符而已。定義一個變量使用關鍵字var。
定義一個變量之後可以随便更改它的類型和值,但是不推薦這種做法。另外,使用var定義的變量是在所在作用域的局部變量。
也可以一次定義多個變量,和C語言一樣
附加一點前幾天看到的,變量聲明的提前
在函數的内定義的變量會提升位置,var y = 2等價于var y; y = 2;定義一個變量無論在什麼位置會提升到該變量所在作用域的頂部,而指派保留在原位置,即
javascript中有五種簡單資料類型和一種複雜資料類型Object,這五種簡單類型分别為Undefined,Boolean,Number,String,Null。Array不屬于基本資料類型,Array是這幾種資料類型組合而成的。
typeof操作符就是檢驗資料類型的,它的傳回值是一個字元串,可能為:"undefined","number","boolean","string","object","function"。
View Code
undefined類型比較簡單,一個變量聲明但是未定義時就為undefined,或者顯示的聲明變量的值為undefined。注意,對未聲明的變量執行typeof操作同樣會得到undefined,而對未定義的變量執行除typeof以外的操作會報錯。
null是表示一個空對象指針,是以typeof會傳回"object"。注意看下面
Boolean類型主要用在控制語句中,Boolean類型有兩個值true和false,雖然隻有兩個值但是其他類型可以轉化為Boolean類型,要通過Boolean()函數進行轉化。
Boolean
true
false
String
非空
""
Number
非零
0 NaN
Undefined
不适用
undefined
Object
非空對象
null
Number類型也和C語言中的類型聲明差不多,可以八進制和十六進制的,主要是總結一下數值轉換。
注意:不要檢測一個特定的浮點數值,由于浮點數值的存在精度因素。例子:0.2 +0.1等于0.30000000000000004而不是0.3。
數值裝換的規則其實也不用我們死記硬背,其實很多都符合我們的正常想法。空就是0,true就是1,false就是0,null是0,undefined未定義就是NaN,字元串的裝換也很簡單,從左往右依次查找可以轉化的數值,盡可能多的查找,從頭找起就是有多少找多少,如果這個字元串是以非數字的字元串開頭的就為NaN。簡單的說就是:如果第一個是數字字元,則解析第二個,直到遇到一個非數字字元。但是現在不能解析八進制的字元串,會忽視前導零的存在。主要函數是Number()和parseInt(),這兩個函數的作用是一樣的,但是parseInt更合理一些,parse隻解析字元串,parseInt會忽略字元串前面的空格,直到第一個非空格字元,這樣parseInt轉換空字元為NaN。
對象轉換數值,則會調用對象的valueOf()方法,轉換該方法的傳回值,《javascript進階程式設計》說如果為NaN,則再調用toString()方法,在轉化它的傳回值,但是我chrome下測試顯示,如果轉化valudeOf()的傳回值為NaN結果就為NaN,沒有重寫valueOf()時,轉換的是toString()的傳回值。求大神指導。。。。。。。。
String類型可以用單引号或雙引号表示,沒啥差別。var str = "string",它有一個屬性length,傳回字元串的長度,str.length等于6。
String創立之後,字元串的值是不可改變的。要改變必須銷毀原來的字元串,再用新的字元串指派給這個變量。例如:
其他變量轉為String類型,每一個類型會有一個toString()方法,除了Null和Undefined。toString()大多數不帶參數,Number類型轉換字元串的時候可以帶參數,表示轉換多少進制。例子:var n = 10;alert(n.toString(2));傳回“1010”。
還有一個轉換字元串的String()方法,在不知道是不是Null和Undefined類型的情況下,使用String()方法,變量有toString()方法就調用它。
object是所有對象的基礎,建立一個對象和其他語言差不多,var obj = new Object();每一個object對象執行個體都會有一些屬性和方法。
constructor 儲存建立目前對象的函數,new 後面的函數
hasOwnProperty(proname) 檢測目前的執行個體中是否有proname這個屬性
isPrototypeOf(obj) 檢測目前對象是否是傳入對象的原型
toLocalString() 傳回目前執行環境對應的字元串
toString() 傳回字元串
valueOf() 傳回對象的字元串,數值或布爾值,通常與toSting()傳回值一樣
propertyIsEnumerable(proname) 檢測proname屬性是否可以被枚舉
第一次寫這麼長的部落格,寫的很慢,但是自己在寫的同時真的會很認真的找資料做實驗來得出一些結論,雖然這篇很基礎,但是我對這部分的印象更加的深刻了。路不是一天走出來的,我的部落格之旅還很長,希望以後會一點點變好。javascript的基礎我會多寫幾篇部落格,給像我一樣的小白一點幫助,大神們就請給我一些指導提出一些意見吧。