电竞比分网-中国电竞赛事及体育赛事平台

分享

JavaScript 基礎

 印度阿三17 2019-07-13

 1. 數(shù)據(jù)類型:

  js中的原始數(shù)據(jù)類型:number、string、boolean、undefined、null、object

  原始數(shù)據(jù)類型又分為:

    基本類型(簡單類型),值類型:number、string、boolean

    復雜類型(引用類型):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 其他類型轉換成數(shù)字類型:parseInt();    parseFloat();   Number();

    4.2 其他類型轉換字符串類型:toString();    String();

    4.3 其他類型轉換成布爾類型:boolean();  //空字符串、null、undefined轉換之后都是false(即沒有意義的,轉換之后都是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í)行一次表達式1,然后判斷表達式2

6. 數(shù)組:

 ?。?)創(chuàng)建數(shù)組:

            1)通過構造函數(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ù)組中重復的0:

     

       2)反轉數(shù)組:

     

6. arguments:對象,偽數(shù)組,當不知道傳入的參數(shù)的具體個數(shù)時,可以使用。

7. 函數(shù):匿名函數(shù)(函數(shù)表達式)、命名函數(shù)(函數(shù)聲明)、函數(shù)的自調用(沒有名字,聲明的同時,直接調用)。

  注意:函數(shù)聲明,函數(shù)名相同,則前面的同名函數(shù)將會被覆蓋;函數(shù)表達式,變量名相同,不會被覆蓋。

  作為參數(shù)使用的函數(shù),叫回調函數(shù)。(注意:函數(shù)名代表代碼,若有括號,則是結果。)

  函數(shù)可以作為參數(shù)使用,也可以作為返回值使用。

8. 作用域鏈:你使用的變量應該在當前作用域范圍內查找,找不到,則往上一級查找,以此類推,直到0級作用域也找不到,則會報錯,說明沒有定義。

  

9. 預解析:把變量的聲明和函數(shù)的聲明提前到了該作用域的嘴上面,但是值沒有。

10. 創(chuàng)建對象的三種方式:

 ?。?)調用系統(tǒng)構造函數(shù)來創(chuàng)建對象:

  var obj = new Object();

  obj.name = 'smile';    //添加屬性

  obj.play = function() { console.log("I like to play football");}   //添加方法

  (2)自定義構造函數(shù)來創(chuàng)建對象:

    先自定義一個構造函數(shù):

    

    再創(chuàng)建對象——實例化對象,并初始化:

    

    注意:函數(shù)和構造函數(shù)的區(qū)別:函數(shù)名首字母是小寫的,是用來調用的;構造函數(shù)的函數(shù)名首字母是大寫的,是用來創(chuàng)建對象的。

    自定義構造函數(shù)創(chuàng)建對象做了四件事:

    1)在內存中開辟(申請一塊空閑的空間)空間,存儲創(chuàng)建的新的對象。

    2)把this設置為當前的對象
    3)設置對象的屬性和方法的值
    4)把this這個對象返回

  ?。?)字面量的方式創(chuàng)建對象:

     

  (4)一次性創(chuàng)建多個對象:工廠模式。把創(chuàng)建對象的代碼封裝在一個函數(shù)中:

  

  創(chuàng)建并實例化一個對象:

  

  再創(chuàng)建并實例化一個對象:

  

11. 設置和獲取屬性的方法:

  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)對象:

  實例對象:通過構造函數(shù)創(chuàng)建出來,實例化的對象。

  靜態(tài)對象:不需要創(chuàng)建,直接就是一個對象,方法(靜態(tài)方法),直接通過這個對象的名字調用。

  實例方法必須通過實例對象調用;靜態(tài)方法必須通過大寫的對象調用。

15. Math對象

  Math.PI-----常數(shù)π;Math.E-----常數(shù)的底數(shù);Math.abs(值)-----絕對值;Math.ceil(值)-----向上取整;Math.floor(值)-----向下取整;Math.pow(值1,值2)-----值1的值2次冪;Math.sqrt(值)-----值的平方根(開平方的結果);Math.random()------產生偽隨機數(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; 產生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ù)字轉換成ASCLL碼

  .concat()  //該方法將一個或多個字符串與原字符串連接合并,形成一個新的字符串并返回 

  .indexOf(searchValue[, fromIndex]) //返回調用String對象中第一次出現(xiàn)的指定值的索引,開始在f.romindex進行搜索,如果未找到該值,則返回-1
  .lastIndexOf() //從后往前找
  .replace("原來的字符串","新的字符串") //用新的字符串替換原來的字符串
  .slice(start, end) //返回提取后的字符串
  .split("字符串",切割后留下的個數(shù)) //切割字符串
  .substr() //返回一個字符串從指定位置開始到指定字符數(shù)的字符
  .substring(開始的索引,結束的索引),返回截取后的字符串,不包含結束索引的字符
  .toLocaleLowerCase(); //轉換成小寫
  .toLowerCase(); //轉換成小寫
  .toLocaleUpperCase(); //轉換成大寫
  .toUpperCase(); //轉換成大寫
  .trim() //切掉字符串兩端的空格

18. Array對象

  判斷變量是不是數(shù)組:instanceof 、isArray()

  

 ?。?)拼接一個或多個數(shù)組;concat()

 ?。?)測試數(shù)組的所有元素是否都通過了指定函數(shù)的測試;fevery()

  

 ?。?).將符合條件的數(shù)組值組合成一個新的數(shù)組輸出返回;filter()

  

 ?。?)追加元素;

    push()  追加一個元素到數(shù)組的末尾,返回值為插入后數(shù)組的長度。

    unshift()   追加一個元素到數(shù)組的開始,返回值為插入后數(shù)組的長度。

 ?。?)刪除元素:

    pop()  刪除數(shù)組的最后一個元素,返回值為刪除的這個元素

    shift()  刪除數(shù)組的第一個元素,返回值為刪除的這個元素

 ?。?)遍歷數(shù)組:for循環(huán) 或者 forEach()

    

 ?。?)找元素的索引:indexOf(),有則返回索引,沒有則返回1。

  (8)將數(shù)組中所有元素放到一個字符串中。join(分隔符) 

   

 ?。?)map():數(shù)組中的每一個元素都要執(zhí)行這個函數(shù),把執(zhí)行后的結果放在一個新的數(shù)組中。

  

  (10)排序。sort() 但是不穩(wěn)定,應該加上固定寫法,使其穩(wěn)定。

  

 ?。?1)截?。簊lice(開始索引,結束索引)  注意:截取后的新數(shù)組不包含結束索引。

  (12)刪除、插入、替換元素; splice(開始的索引,要刪除的個數(shù),替換的元素)。

  

19. 基本包裝類型:

  普通變量不能直接調用屬性或者方法;對象可以直接調用屬性和方法。

  基本包裝類型:本身是基本類型,但是在執(zhí)行代碼的過程中,如果這種類型的變量調用了屬性或者方法,那么這種類型就不再是基本類型了,而是基本包裝類型,這個變量也不是普通的變量了,而是基本包裝類型對象

  string boolean number  既是基本類型,也可能是基本包裝類型

  

20. 冒泡排序:

  

來源:https://www./content-1-324901.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多