1. 數(shù)據(jù)類(lèi)型: js中的原始數(shù)據(jù)類(lèi)型:number、string、boolean、undefined、null、object 原始數(shù)據(jù)類(lèi)型又分為: 基本類(lèi)型(簡(jiǎn)單類(lèi)型),值類(lèi)型:number、string、boolean 復(fù)雜類(lèi)型(引用類(lèi)型):object 空類(lèi)型:undefined、null 注意:值類(lèi)型之間傳遞,傳遞的是值,值在棧上;引用類(lèi)型之間的傳遞,傳遞的是地址(引用),對(duì)象在堆,地址在棧。 2. 獲取變量的數(shù)據(jù)類(lèi)型:typeof typeof 變量名 / typeof(變量名) 3. isNaN():驗(yàn)證這個(gè)變量或值是不是 不是一個(gè)數(shù)字。NaN:Not a Number(不是一個(gè)數(shù)字) 注意:不要用NaN 驗(yàn)證 isNaN;不要用小數(shù)驗(yàn)證小數(shù);js中所有數(shù)字都是number類(lèi)型的。 4. 類(lèi)型裝換 4.1 其他類(lèi)型轉(zhuǎn)換成數(shù)字類(lèi)型:parseInt(); parseFloat(); Number(); 4.2 其他類(lèi)型轉(zhuǎn)換字符串類(lèi)型:toString(); String(); 4.3 其他類(lèi)型轉(zhuǎn)換成布爾類(lèi)型:boolean(); //空字符串、null、undefined轉(zhuǎn)換之后都是false(即沒(méi)有意義的,轉(zhuǎn)換之后都是false) 5. 循環(huán): while循環(huán):先判斷,再執(zhí)行,循環(huán)體可能一次都不會(huì)被執(zhí)行 do-while循環(huán):先執(zhí)行一次循環(huán)體,后判斷。至少執(zhí)行一次循環(huán)體 for循環(huán):先執(zhí)行一次表達(dá)式1,然后判斷表達(dá)式2 6. 數(shù)組: ?。?)創(chuàng)建數(shù)組: 1)通過(guò)構(gòu)造函數(shù)創(chuàng)建數(shù)組 var arr = new Array(); var arr = new Array(10); //長(zhǎng)度為10的數(shù)組,但是數(shù)據(jù)類(lèi)型都為 undefined var arr = new Array(1,2,3,4,5); 2)通過(guò)字面量的方式創(chuàng)建數(shù)組 var arr = []; var arr = [1, 2, 3, 4]; ?。?)小案例: 1)去掉數(shù)組中重復(fù)的0: 2)反轉(zhuǎn)數(shù)組: 6. arguments:對(duì)象,偽數(shù)組,當(dāng)不知道傳入的參數(shù)的具體個(gè)數(shù)時(shí),可以使用。 7. 函數(shù):匿名函數(shù)(函數(shù)表達(dá)式)、命名函數(shù)(函數(shù)聲明)、函數(shù)的自調(diào)用(沒(méi)有名字,聲明的同時(shí),直接調(diào)用)。 注意:函數(shù)聲明,函數(shù)名相同,則前面的同名函數(shù)將會(huì)被覆蓋;函數(shù)表達(dá)式,變量名相同,不會(huì)被覆蓋。 作為參數(shù)使用的函數(shù),叫回調(diào)函數(shù)。(注意:函數(shù)名代表代碼,若有括號(hào),則是結(jié)果。) 函數(shù)可以作為參數(shù)使用,也可以作為返回值使用。 8. 作用域鏈:你使用的變量應(yīng)該在當(dāng)前作用域范圍內(nèi)查找,找不到,則往上一級(jí)查找,以此類(lèi)推,直到0級(jí)作用域也找不到,則會(huì)報(bào)錯(cuò),說(shuō)明沒(méi)有定義。 9. 預(yù)解析:把變量的聲明和函數(shù)的聲明提前到了該作用域的嘴上面,但是值沒(méi)有。 10. 創(chuàng)建對(duì)象的三種方式: (1)調(diào)用系統(tǒng)構(gòu)造函數(shù)來(lái)創(chuàng)建對(duì)象: var obj = new Object(); obj.name = 'smile'; //添加屬性 obj.play = function() { console.log("I like to play football");} //添加方法 ?。?)自定義構(gòu)造函數(shù)來(lái)創(chuàng)建對(duì)象: 先自定義一個(gè)構(gòu)造函數(shù): 再創(chuàng)建對(duì)象——實(shí)例化對(duì)象,并初始化: 注意:函數(shù)和構(gòu)造函數(shù)的區(qū)別:函數(shù)名首字母是小寫(xiě)的,是用來(lái)調(diào)用的;構(gòu)造函數(shù)的函數(shù)名首字母是大寫(xiě)的,是用來(lái)創(chuàng)建對(duì)象的。 自定義構(gòu)造函數(shù)創(chuàng)建對(duì)象做了四件事: 1)在內(nèi)存中開(kāi)辟(申請(qǐng)一塊空閑的空間)空間,存儲(chǔ)創(chuàng)建的新的對(duì)象。 2)把this設(shè)置為當(dāng)前的對(duì)象 ?。?)字面量的方式創(chuàng)建對(duì)象: ?。?)一次性創(chuàng)建多個(gè)對(duì)象:工廠模式。把創(chuàng)建對(duì)象的代碼封裝在一個(gè)函數(shù)中: 創(chuàng)建并實(shí)例化一個(gè)對(duì)象: 再創(chuàng)建并實(shí)例化一個(gè)對(duì)象: 11. 設(shè)置和獲取屬性的方法: 1)點(diǎn)語(yǔ)法:obj.age = 22; obj.play() 2)方括號(hào):obj["age"] = 22; obj["play"](); 12. JSON 格式的數(shù)據(jù): JSON格式的數(shù)據(jù)一般都是成對(duì)的,是鍵值對(duì);JSON也是一個(gè)對(duì)象,一般json格式的數(shù)據(jù)無(wú)論是鍵還是值都是用雙引號(hào)括起來(lái)的。 13. 遍歷對(duì)象: 不能用 for 循環(huán),因?yàn)閷?duì)象是無(wú)序的,可以通過(guò)key-in循環(huán)來(lái)遍歷(key 是變量名,可更改,json是對(duì)象名,也可以是其他對(duì)象) 14. 實(shí)例對(duì)象和靜態(tài)對(duì)象: 實(shí)例對(duì)象:通過(guò)構(gòu)造函數(shù)創(chuàng)建出來(lái),實(shí)例化的對(duì)象。 靜態(tài)對(duì)象:不需要?jiǎng)?chuàng)建,直接就是一個(gè)對(duì)象,方法(靜態(tài)方法),直接通過(guò)這個(gè)對(duì)象的名字調(diào)用。 實(shí)例方法必須通過(guò)實(shí)例對(duì)象調(diào)用;靜態(tài)方法必須通過(guò)大寫(xiě)的對(duì)象調(diào)用。 15. Math對(duì)象 Math.PI-----常數(shù)π;Math.E-----常數(shù)的底數(shù);Math.abs(值)-----絕對(duì)值;Math.ceil(值)-----向上取整;Math.floor(值)-----向下取整;Math.pow(值1,值2)-----值1的值2次冪;Math.sqrt(值)-----值的平方根(開(kāi)平方的結(jié)果);Math.random()------產(chǎn)生偽隨機(jī)數(shù)(0-1之間的);Math.max(10, 2, 3, 4, 17, 19);從一組數(shù)據(jù)中找 最大值;Math.min(10, 2, 3, 4, 17, 19);從一組數(shù)據(jù)中找 最小值;parseInt(Math.random()*5) 1; 產(chǎn)生1-5之間的隨機(jī)整數(shù)。 16. Date 對(duì)象 不是靜態(tài)的,需要先實(shí)例化。var dt = new Date(); 17. 字符串對(duì)象----String 對(duì)象 string----->字符串類(lèi)型-----基本類(lèi)型 String----->字符串類(lèi)型-----引用類(lèi)型 字符串特性:不可變性??梢詫⒆址闯墒且粋€(gè)字符數(shù)組,可以通過(guò)for循環(huán)進(jìn)行遍歷。 字符串常用的屬性和方法: .length //字符串的長(zhǎng)度 .charAt(index) //返回值是指定索引位置的字符,超出.length-1的索引,會(huì)返回空字符 .fromCharCode(num1,...,numN) //把數(shù)字轉(zhuǎn)換成ASCLL碼 .concat() //該方法將一個(gè)或多個(gè)字符串與原字符串連接合并,形成一個(gè)新的字符串并返回 .indexOf(searchValue[, fromIndex]) //返回調(diào)用String對(duì)象中第一次出現(xiàn)的指定值的索引,開(kāi)始在f.romindex進(jìn)行搜索,如果未找到該值,則返回-1 18. Array對(duì)象 判斷變量是不是數(shù)組:instanceof 、isArray() (1)拼接一個(gè)或多個(gè)數(shù)組;concat() ?。?)測(cè)試數(shù)組的所有元素是否都通過(guò)了指定函數(shù)的測(cè)試;fevery() ?。?).將符合條件的數(shù)組值組合成一個(gè)新的數(shù)組輸出返回;filter() ?。?)追加元素; push() 追加一個(gè)元素到數(shù)組的末尾,返回值為插入后數(shù)組的長(zhǎng)度。 unshift() 追加一個(gè)元素到數(shù)組的開(kāi)始,返回值為插入后數(shù)組的長(zhǎng)度。 (5)刪除元素: pop() 刪除數(shù)組的最后一個(gè)元素,返回值為刪除的這個(gè)元素 shift() 刪除數(shù)組的第一個(gè)元素,返回值為刪除的這個(gè)元素 ?。?)遍歷數(shù)組:for循環(huán) 或者 forEach() ?。?)找元素的索引:indexOf(),有則返回索引,沒(méi)有則返回1。 ?。?)將數(shù)組中所有元素放到一個(gè)字符串中。join(分隔符) ?。?)map():數(shù)組中的每一個(gè)元素都要執(zhí)行這個(gè)函數(shù),把執(zhí)行后的結(jié)果放在一個(gè)新的數(shù)組中。 ?。?0)排序。sort() 但是不穩(wěn)定,應(yīng)該加上固定寫(xiě)法,使其穩(wěn)定。 ?。?1)截?。簊lice(開(kāi)始索引,結(jié)束索引) 注意:截取后的新數(shù)組不包含結(jié)束索引。 (12)刪除、插入、替換元素; splice(開(kāi)始的索引,要?jiǎng)h除的個(gè)數(shù),替換的元素)。 19. 基本包裝類(lèi)型: 普通變量不能直接調(diào)用屬性或者方法;對(duì)象可以直接調(diào)用屬性和方法。 基本包裝類(lèi)型:本身是基本類(lèi)型,但是在執(zhí)行代碼的過(guò)程中,如果這種類(lèi)型的變量調(diào)用了屬性或者方法,那么這種類(lèi)型就不再是基本類(lèi)型了,而是基本包裝類(lèi)型,這個(gè)變量也不是普通的變量了,而是基本包裝類(lèi)型對(duì)象 string boolean number 既是基本類(lèi)型,也可能是基本包裝類(lèi)型 20. 冒泡排序: |
|
來(lái)自: 印度阿三17 > 《開(kāi)發(fā)》