1. JavaScript是作用于網(wǎng)絡(luò)和HTML的一個編程語言。
2. JavaScript代碼必須放在標簽之間,Javascript現(xiàn)在是HTML默認的腳本語言,所以在標簽中不需要聲明腳本語言為JavaScript,即不需要type="text/javascript"。
3. 可以添加任意數(shù)量的腳本在HTML document中,JavaScript可以放在或區(qū)域,也可以兩處都放,把JavaScript放在body區(qū)域的底部可以提高網(wǎng)頁加載的速度。
4. JavaScript可以放在一個單獨的js文件中,需要使用的時候在頁面引入即可。外部js代碼不可以包含標簽。
5. JavaScript沒有任何內(nèi)置的打印和顯示函數(shù),輸出信息有四種方式:a)window.alert()把信息寫到彈出框。b)document.write()把信息寫到HTML輸出,注意在HTML document完全加載完之后執(zhí)行document.write()將會刪除頁面所有的HTML元素。c)innerHTML把信息寫到一個HTML元素中。d)console.log()把信息輸出到瀏覽器控制臺。
6. JavaScript語法定義兩種類型的值:固定值又稱字面量,數(shù)字用十進制表示或不用十進制表示,字符串是一個文本,寫在雙引號或單引號內(nèi)。如'lcw',4,變量值又稱變量,用來存儲數(shù)值,JavaScript使用”var“關(guān)鍵字聲明變量,使用一個”=“,為其賦值。如var x; x = 6。
7. JavaScript使用數(shù)學運算符 + - * / 計算數(shù)值。
8. JavaScript在//后和在/**/中的內(nèi)容是注釋內(nèi)容,在代碼執(zhí)行時會被忽略,建議優(yōu)先使用//注釋,/**/可以寫一些正式的說明文檔。
9. JavaScript標識符用來命名變量,變量名的第一個字符必須為字母、下劃線或美元符號($),其他字符可以是字母、數(shù)字、下劃線、美元符號,數(shù)字不允許作為變量名的第一個字符,這樣JavaScript就可以輕易的把數(shù)字和標識符區(qū)分開,在JavaScript中表示符大小寫是會判斷的,如lastName和LastName是不同的變量,VAr也不會被解釋為關(guān)鍵字var,”-“號不能作為標識符中的字符,其在JavaScript中作為減號使用。
10. 在每句代碼最后分號并不是一定要有的,但強烈建議加上。為了增加可讀性可以在代碼中加上一些空格,如賦值語句中在等號前后加上個加上一個空格,代碼會看起來更美觀,一般建議在"+","-","*","/","="這些字符兩側(cè)都加上空格。
11. 在實際編寫代碼中,若一行占位過于長,可以在等號處換行。
12. 建議在代碼的開頭聲明所有的變量。
13. 在JavaScript中,如果聲明一個變量,沒有為其賦值,其默認值是:undefined。
14. +用在字符串運算中,相當于連接符。
15. 在運算時,注意運算符有優(yōu)先級。
16. 當把一個數(shù)字和字符串相加時,數(shù)字將會被作為字符串處理。
17. JavaScript具有動態(tài)類型特性,當聲明一個變量,為其賦值,其類型就為該值的類型,若為其賦另一種類型的值,則改變量的類型也將會隨之改變。
18. 在定義字符串時,單引號和雙引號可互相嵌套,注意引號配對問題。
19. JavaScript中的數(shù)組下標從0開始,在JavaScript中數(shù)組也是對象,沒有賦值的變量typeof返回值是undefined,注意var v = "",v的typeof返回值是string,其值是"",注意null的typeof的返回值是object。
20. 定義函數(shù)名的規(guī)則和定義標識符的規(guī)則相同,在函數(shù)內(nèi)部。
21. return會結(jié)束代碼的執(zhí)行。
22. JavaScript中的對象是屬性和方法的容器。
23. 定義一個對象,訪問該屬性有兩種方法:1.對象名.屬性名,2.對象名["屬性名"]。調(diào)用一個方法對象名.方法名(),如果寫成對象名.方法名,將返回函數(shù)的定義。
24. 盡量不要用new關(guān)鍵字聲明一個變量,這樣會使代碼復(fù)雜化,并會減慢執(zhí)行速度。
25. 在函數(shù)內(nèi)部定義的變量是局部變量,只能在函數(shù)內(nèi)部訪問,即變量的作用域,調(diào)用函數(shù)時傳入的參數(shù)作為函數(shù)內(nèi)的局部變量處理,不同函數(shù)內(nèi)的變量名字可以相同。
26. 函數(shù)內(nèi)的局部變量在函數(shù)開始執(zhí)行時創(chuàng)建在函數(shù)結(jié)束時刪除。
27. 定義在函數(shù)外部的變量就是全局變量,全局變量可以在任何地方訪問。
28. 若賦值給一個沒有聲明的變量,該變量將自動變?yōu)槿肿兞浚M量不要定義全局變量。
29. 全局變量或函數(shù)可以覆蓋window變量和函數(shù),反之亦然。
30. JavaScript中的變量的生命周期中被聲明時開始,本地變量在函數(shù)執(zhí)行完之后被刪除,全局變量在用戶關(guān)閉網(wǎng)頁時被刪除,在HTML中所有的全局變量屬于window對象。
31. \可以把以一些具有特殊含義的字符轉(zhuǎn)為字符 如var a = "qwer\"qw\"er";
32. JavaScript把一些原始類型的數(shù)據(jù)像字符串看作對象,它們也有屬性和方法。
33. JavaScript中數(shù)字的存儲是雙精度浮點類型,占用64位大小,0-51是數(shù)值,52-62表示指數(shù),63位表示正負。當表示整數(shù)時,超過15位就不準確了,不要把0作為數(shù)字的第一位。
34. 默認JavaScript顯示數(shù)字是10進制。可以通過toString(8)轉(zhuǎn)成8進制,或其他進制。
35. Infinity/-Infinity,整數(shù)除0即得Infinity,負數(shù)除0即得-Infinity,Infinity的類型是number。
36. NaN即Not a Number,100/"apple"的結(jié)果就是NaN,100/"10"的結(jié)果就是10。
37. JavaScript中注釋建議使用//,/**/在正式說明時使用。
38. 在實際編程中最好在變量作用域最開始的地方聲明所有變量。
39. JavaScript中String是構(gòu)造函數(shù),string是數(shù)據(jù)類型。
40. JavaScript中函數(shù)名代表函數(shù)定義,函數(shù)名()則代表函數(shù)執(zhí)行。
41. JavaScript中當設(shè)置一個時間時,如果沒有設(shè)置時區(qū),js將會使用瀏覽器的時區(qū),當獲取一個時間時,如果沒有設(shè)置時區(qū),結(jié)果將會轉(zhuǎn)化為瀏覽器時區(qū)時間。
42. 注意定義數(shù)組時,數(shù)組的最后一個元素的最后不要再加上",",JavaScript中數(shù)組的下標索引從0開始。
43. 定義數(shù)組時若索引是被命名的,JavaScript將會重新定義數(shù)組為一個標準的對象,這樣數(shù)組的一些屬性和方法將會返回錯誤的結(jié)果。如:var person = []; person["firstone"] = "lcw"; preson.length,person[0]返回的結(jié)果和預(yù)期將會不相符合。
44. Javascript中數(shù)組使用數(shù)字下標索引,對象使用命名索引。Arrays是使用數(shù)字下標索引的特殊對象。
45. 所有的JavaScript對象都有valueOf()和toString()方法。
46. 在JavaScript中所有的原始類型的值在執(zhí)行獲取屬性和執(zhí)行方法時,JavaScript會把他們看成對象。
47. 注意Javascript中"==="和"=="的區(qū)別,及"!="和"!=="的區(qū)別。
48. JavaScript中數(shù)字在運算時會被轉(zhuǎn)化為32位表示。
49. JavaScript中的switch語句中如果default不是最后一個情景,以"break;"結(jié)束。
50. JavaScript中的變量可以被轉(zhuǎn)化為另一個新變量和另一種數(shù)據(jù)類型,JavaScript自身會轉(zhuǎn)換變量類型,也可以使用JavaScript提供的函數(shù)轉(zhuǎn)換。
51. JavaScript會自動調(diào)用變量的toString()方法,當我們試圖輸出變量或?qū)ο髸r。
52. 在JavaScript中try和catch總是成對出現(xiàn),當錯誤產(chǎn)生時JavaScript將會正常停止,生成一個錯誤信息。
53. JavaScript中的throw關(guān)鍵字,可以throw new Error(""); 或 throw "error"。
54. JavaScript中有托舉現(xiàn)象,就是JavaScript會把所有的聲明移到變量所在作用域的最前面,這樣在代碼中就可以使用在代碼執(zhí)行時還沒有聲明的變量,但是如果變量在聲明時已經(jīng)被初始化賦值,則不會被“托舉”,托舉的只是變量聲明,并不包括變量賦值。
55. JavaScript中用'use strict'聲明使用嚴格模式解釋執(zhí)行代碼,嚴格模式的聲明也會有作用域的問題,即嚴格模式作用的范圍,另外這種聲明只在代碼的開始或函數(shù)的開始。
56. 聲明變量時最好對其進行初始化操作,這樣可以避免出現(xiàn)undefined值。
57. 盡量不要用new關(guān)鍵字聲明對象,直接回變量賦值即可。
58. 最好在函數(shù)內(nèi)部對每一個參數(shù)做初始化賦值。
59. 聲明switch語句時最好在最后加上default。
60. 盡量避免使用eval();
61. 在開發(fā)中要注意js的加載會延緩頁面加載,如果需要從遠程服務(wù)器下載js文件,根據(jù)HTTP定義不能并行下載多個組件。
62. JavaScript中的數(shù)據(jù)類型,1.簡單數(shù)據(jù)類型:undefined , null , boolean, number,string;2.復(fù)雜數(shù)據(jù)類型:object;
63. JavaScript中typeof返回的值類型:undefined , null , boolean, number,string,object,function。
64. 在JavaScript中對象是國王,如果我們能理解對象,我們就理解了JavaScript。
65. 一個JavaScript對象是一個命名的值集合,從性能等其他地方考慮,最好使用字面量聲明對象。
66. 每個JavaScript對象都有一個原型,原型也是一個對象,所有的JavaScript對象都會從原型繼承方法和屬性。
67. 函數(shù)的聲明會被“托舉”,所以可以在函數(shù)聲明之前調(diào)用執(zhí)行。
68. JavaScript中函數(shù)定義不指定參數(shù)的數(shù)據(jù)類型,JavaScript不會對傳來的參數(shù)做數(shù)據(jù)類型檢查,JavaScript不會檢查傳入?yún)?shù)的數(shù)量,所以當調(diào)用一個函數(shù)時,傳給其的參數(shù)若和函數(shù)聲明時參數(shù)的數(shù)量不相等,將不會產(chǎn)生影響,若傳入的參數(shù)多于函數(shù)聲明時傳入的數(shù)量,則可以使用arguments對象獲取值。
69. "this"關(guān)鍵字在項目執(zhí)行時就是指擁有當前這段代碼的對象,當在函數(shù)中用時,就是指擁有這段方法的對象。
70. 變量創(chuàng)建沒有"var"關(guān)鍵字,該變量將會是全局變量,即使變量是在函數(shù)里定義。
71. 在JavaScript中所有的函數(shù)都可以訪問它本身屬于那個作用域。
72.JavaScript中的閉包就是函數(shù)在父函數(shù)已經(jīng)關(guān)閉了之后,依然可以訪問父作用域。