1. JavaScript是作用于網(wǎng)絡(luò)和HTML的一個編程語言返帕。
2. JavaScript代碼必須放在標(biāo)簽之間,Javascript現(xiàn)在是HTML默認(rèn)的腳本語言仔燕,所以在標(biāo)簽中不需要聲明腳本語言為JavaScript螟蝙,即不需要type="text/javascript"。
3. 可以添加任意數(shù)量的腳本在HTML document中扼褪,JavaScript可以放在或區(qū)域,也可以兩處都放粱栖,把JavaScript放在body區(qū)域的底部可以提高網(wǎng)頁加載的速度话浇。
4. JavaScript可以放在一個單獨(dú)的js文件中,需要使用的時候在頁面引入即可闹究。外部js代碼不可以包含標(biāo)簽幔崖。
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ù)字用十進(jìn)制表示或不用十進(jìn)制表示用踩,字符串是一個文本渠退,寫在雙引號或單引號內(nèi)忙迁。如'lcw',4,變量值又稱變量碎乃,用來存儲數(shù)值姊扔,JavaScript使用”var“關(guān)鍵字聲明變量,使用一個”=“梅誓,為其賦值恰梢。如var x; x = 6。
7. JavaScript使用數(shù)學(xué)運(yùn)算符 + - * / 計算數(shù)值梗掰。
8. JavaScript在//后和在/**/中的內(nèi)容是注釋內(nèi)容嵌言,在代碼執(zhí)行時會被忽略,建議優(yōu)先使用//注釋愧怜,/**/可以寫一些正式的說明文檔呀页。
9. JavaScript標(biāo)識符用來命名變量妈拌,變量名的第一個字符必須為字母拥坛、下劃線或美元符號($),其他字符可以是字母尘分、數(shù)字猜惋、下劃線、美元符號培愁,數(shù)字不允許作為變量名的第一個字符著摔,這樣JavaScript就可以輕易的把數(shù)字和標(biāo)識符區(qū)分開,在JavaScript中表示符大小寫是會判斷的定续,如lastName和LastName是不同的變量,VAr也不會被解釋為關(guān)鍵字var谍咆,”-“號不能作為標(biāo)識符中的字符,其在JavaScript中作為減號使用私股。
10. 在每句代碼最后分號并不是一定要有的摹察,但強(qiáng)烈建議加上。為了增加可讀性可以在代碼中加上一些空格倡鲸,如賦值語句中在等號前后加上個加上一個空格供嚎,代碼會看起來更美觀,一般建議在"+"峭状,"-"克滴,"*","/"优床,"="這些字符兩側(cè)都加上空格劝赔。
11. 在實(shí)際編寫代碼中,若一行占位過于長胆敞,可以在等號處換行着帽。
12. 建議在代碼的開頭聲明所有的變量罩阵。
13. 在JavaScript中,如果聲明一個變量启摄,沒有為其賦值稿壁,其默認(rèn)值是:undefined。
14. +用在字符串運(yùn)算中歉备,相當(dāng)于連接符傅是。
15. 在運(yùn)算時,注意運(yùn)算符有優(yōu)先級蕾羊。
16. 當(dāng)把一個數(shù)字和字符串相加時喧笔,數(shù)字將會被作為字符串處理。
17. JavaScript具有動態(tài)類型特性龟再,當(dāng)聲明一個變量书闸,為其賦值,其類型就為該值的類型利凑,若為其賦另一種類型的值浆劲,則改變量的類型也將會隨之改變。
18. 在定義字符串時哀澈,單引號和雙引號可互相嵌套牌借,注意引號配對問題。
19. JavaScript中的數(shù)組下標(biāo)從0開始割按,在JavaScript中數(shù)組也是對象膨报,沒有賦值的變量typeof返回值是undefined,注意var v = ""适荣,v的typeof返回值是string现柠,其值是"",注意null的typeof的返回值是object弛矛。
20. 定義函數(shù)名的規(guī)則和定義標(biāo)識符的規(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ù)字的存儲是雙精度浮點(diǎn)類型,占用64位大小相恃,0-51是數(shù)值,52-62表示指數(shù)笨觅,63位表示正負(fù)拦耐。當(dāng)表示整數(shù)時,超過15位就不準(zhǔn)確了见剩,不要把0作為數(shù)字的第一位杀糯。
34. 默認(rèn)JavaScript顯示數(shù)字是10進(jìn)制〔园可以通過toString(8)轉(zhuǎn)成8進(jìn)制固翰,或其他進(jìn)制。
35. Infinity/-Infinity羹呵,整數(shù)除0即得Infinity骂际,負(fù)數(shù)除0即得-Infinity,Infinity的類型是number冈欢。
36. NaN即Not a Number歉铝,100/"apple"的結(jié)果就是NaN,100/"10"的結(jié)果就是10凑耻。
37. JavaScript中注釋建議使用//太示,/**/在正式說明時使用柠贤。
38. 在實(shí)際編程中最好在變量作用域最開始的地方聲明所有變量。
39. JavaScript中String是構(gòu)造函數(shù)类缤,string是數(shù)據(jù)類型臼勉。
40. JavaScript中函數(shù)名代表函數(shù)定義,函數(shù)名()則代表函數(shù)執(zhí)行餐弱。
41. JavaScript中當(dāng)設(shè)置一個時間時坚俗,如果沒有設(shè)置時區(qū),js將會使用瀏覽器的時區(qū)岸裙,當(dāng)獲取一個時間時猖败,如果沒有設(shè)置時區(qū),結(jié)果將會轉(zhuǎn)化為瀏覽器時區(qū)時間降允。
42. 注意定義數(shù)組時恩闻,數(shù)組的最后一個元素的最后不要再加上",",JavaScript中數(shù)組的下標(biāo)索引從0開始剧董。
43. 定義數(shù)組時若索引是被命名的幢尚,JavaScript將會重新定義數(shù)組為一個標(biāo)準(zhǔn)的對象,這樣數(shù)組的一些屬性和方法將會返回錯誤的結(jié)果翅楼。如:var person = []; person["firstone"] = "lcw"; preson.length,person[0]返回的結(jié)果和預(yù)期將會不相符合尉剩。
44. Javascript中數(shù)組使用數(shù)字下標(biāo)索引,對象使用命名索引毅臊。Arrays是使用數(shù)字下標(biāo)索引的特殊對象理茎。
45. 所有的JavaScript對象都有valueOf()和toString()方法。
46. 在JavaScript中所有的原始類型的值在執(zhí)行獲取屬性和執(zhí)行方法時管嬉,JavaScript會把他們看成對象皂林。
47. 注意Javascript中"==="和"=="的區(qū)別,及"!="和"!=="的區(qū)別蚯撩。
48. JavaScript中數(shù)字在運(yùn)算時會被轉(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()方法德迹,當(dāng)我們試圖輸出變量或?qū)ο髸r。
52. 在JavaScript中try和catch總是成對出現(xiàn)项栏,當(dāng)錯誤產(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'聲明使用嚴(yán)格模式解釋執(zhí)行代碼,嚴(yán)格模式的聲明也會有作用域的問題艰躺,即嚴(yán)格模式作用的范圍呻袭,另外這種聲明只在代碼的開始或函數(shù)的開始。
56. 聲明變量時最好對其進(jìn)行初始化操作腺兴,這樣可以避免出現(xiàn)undefined值左电。
57. 盡量不要用new關(guān)鍵字聲明對象,直接回變量賦值即可页响。
58. 最好在函數(shù)內(nèi)部對每一個參數(shù)做初始化賦值篓足。
59. 聲明switch語句時最好在最后加上default。
60. 盡量避免使用eval();
61. 在開發(fā)中要注意js的加載會延緩頁面加載闰蚕,如果需要從遠(yuǎn)程服務(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ù)量檀夹,所以當(dāng)調(diào)用一個函數(shù)時筋粗,傳給其的參數(shù)若和函數(shù)聲明時參數(shù)的數(shù)量不相等策橘,將不會產(chǎn)生影響,若傳入的參數(shù)多于函數(shù)聲明時傳入的數(shù)量娜亿,則可以使用arguments對象獲取值丽已。
69. "this"關(guān)鍵字在項目執(zhí)行時就是指擁有當(dāng)前這段代碼的對象,當(dāng)在函數(shù)中用時买决,就是指擁有這段方法的對象沛婴。
70. 變量創(chuàng)建沒有"var"關(guān)鍵字,該變量將會是全局變量督赤,即使變量是在函數(shù)里定義嘁灯。
71. 在JavaScript中所有的函數(shù)都可以訪問它本身屬于那個作用域。
72.JavaScript中的閉包就是函數(shù)在父函數(shù)已經(jīng)關(guān)閉了之后躲舌,依然可以訪問父作用域丑婿。