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