javascript高級程序設計總結一

一、Number類型

1.浮點數注意

0.1+0.2===0.300000000004存在浮點精度缺失的問題。

2.數值

NAN是非數值,NAN不等於它本身。isNAN()可以用來判斷是不是非數值,如果是非數值 返回true,反之,返回false。

二、垃圾回收問題

  1. 標記清除:給變量添加標記,如果使用該變量則去除標記,清除帶有標記的變量。
  2. 引用計數:當引用的次數爲0時,清除掉。

三、引用類型

1.數組總結

// 檢測數值ES5方法
Array.isArray(value)  // 檢測值是否爲數組
// 轉換方法
toString() 將數組轉化爲以逗號分隔的字符串 arr=[1,2,3]  arr.toString()==>"1,2,3"
valueOf() 返回的還是數組 返回指定對象的原始值
// 棧方法
push() 可以接收任意數量的參數,把他們逐個添加到數組的末尾,返回修改後數組的長度
pop() 從數組末尾移除最後一項,返回移除的項
// 隊列方法
shift() 移除數組的第一項並返回該項
unshift() 向數組前端添加任意個項並返回新數組的長度
// 排序
sort(compare)
compare函數接收兩個參數   相當於a-b<0==>a在前面,反之a在後面,相當於升序排序
// 降序,升序相反
(a,b) => (b-a)
// 操作方法
concat(數組 | 一個或多個元素) // 合併數組,返回新數組    不會改變原數組
slice(起始位置 ,[結束位置]) // 切分數組,返回新數組,新數組不包含結束位置的項
splice(起始位置,刪除的個數,[插入的元素]) // 刪除|插入|替換數組,返回刪除的元素組成的數組,會修改原數組
// 位置方法
indexOf(查找的項,[查找起點位置]) // 使用全等操作符,嚴格相等,                 如果等於-1表示不存在,反之返回該查找項的索引
lastIndexOf()  //返回查找項最後一次出現的索引 否則返回-1
// 迭代方法,都接收兩個參數,一個是要在每一項上運行的函數,一個是作用域(可選)   
1.every 對數組中每一項運行給定函數,如果函數對每一項都返回true,則返回true
        every(fn(value,index,array){return ...},[this])
2.some 對數組中每一項運行給定函數,如果函數對任一項都返回true,則返回true
3.filter 對數組中每一項運行給定函數,返回該函數會返回true的項組成的數組
4.forEach 對數組每一項運行給定函數,無返回值
5.map 對數組每一項運行給定函數,返回每次函數調用返回結果組成的數組 有返回值
6.find 對數組每一項進行給定函數,找到第一個符合的返回該項,否則返回undifined
// 歸併方法 reduce和reduceRight(和前者遍歷的方向相反),構建一個最終返回的值
reduce(fn(prev,cur,index,array){ return ... },initValue)
1.fn返回的值會作爲第一個參數傳遞給下一項
2.initValue做爲歸併基礎的初始值

2.date對象

  1. new Date(str|year,mouth,day…)可以接受日期格式的字符串“1995-10-14”,也可以是年、月、日參數的數字
new Date("1995,10,15")
Sun Oct 15 1995 00:00:00 GMT+0800 (中國標準時間) {}
  1. Date.now()返回調用這個方法的日期時間的毫秒數,使用+new Date()也可以。
+new Date('1995,10,15')
813686400000

3.regExp對象

  1. .exec(text) 返回index(表示匹配項在字符串中的位置)、input表示應用正則表達式的字符串
let text="aaac"; let reg=/c/g;let matchs=reg.exec(text); console.log(matchs[0])
VM1462:1 c
  1. test(text):接受一個字符串參數,匹配返回true
let text="aaac"; let reg=/c/g;let matchs=reg.test(text); console.log(matchs)
VM1553:1 true

4.函數

  1. 函數內部屬性arguments對象有一個名叫callee的屬性,該屬性是一個指針,指向擁有這個arguments對象的函數 ,arguments.callee(arg)//調用函數自身,在嚴格模式下報錯,什麼意思?來看個demo吧。同時,如果沒有父函數爲null,有父函數嵌套調用輸出父函數,沒有嵌套調用,也是輸出父函數。callee
function obj(){console.log(arguments.callee)} obj()
VM2131:1 ƒ obj(){console.log(arguments.callee)}//輸出的是obj這個函數
  1. 函數的length屬性是形參的長度,arguments.length是實參的長度
  2. 函數方法(call()、apply()、bind()這裏就不在敘述了)

5.基本包裝類型

  1. 什麼是基本包裝類型?
    大家都知道引用類型,那基本包裝類型就是ECMAScript爲方便操作基本類型提供的三種特殊的引用類型。

       - Number:與數值型對應的引用類型
       - String:與字符串對象的包裝類型。有一個length屬性,返回字符串的長度(保括空格)
       - Boolean:返回true和false
    
var obj=new Boolean(false); if(obj){console.log("hahahah")}; // hahahaha  obj返回的是一個對象,這個是對象存在。
var obj=new Boolean(false); if(obj.valueOf()){console.log("hahahah")};//undefined  對象的值valueOf是false
引用類型 基本包裝類型
使用new操作符創建的應用實例,在執行流離開作用域之前都一直保存在內存中 自動創建的基本包裝類型對象,只存在於一行代碼執行的瞬間,然後立即銷燬
Number String
toString():傳遞一個表示基數的參數,不傳默認爲10進制 charAt(): 傳遞一個索引值,返回該位置的字符
toFixed():傳遞一個保留幾位小數,並且自動舍入 charCodeAt():傳遞一個索引值,返回該字符的ASCII碼
toExponential():指數表示法,同時傳遞幾位小數的參數 concat():字符串連接
toPrecision():顯示的位數 返回適合的格式 slice(start,end)/substr(start,length)/substring(start,end)/indexof()/lastIndexof()/trim()/toLowerCase()/toLocaleLowerCase()/toUpperCase()/toLocaleUpperCase())

6.內置對象

Global對象
1.URI編碼方法
    encodeURI()           // 除了空格之外其他字符都不編碼
    encodeURIComponent()  //會對它發現的任何非標準字符進行編碼
    decodeURI()           //只能對使用encodeURI的字符進行解碼
    decodeURIComponent()  // 原理同上

Math對象
1.Math.max() / Math.min() // 接收任意多數值作爲參數
// 求數組中最大值 Math.max.apply(Math, arrValue)
2.Math.ceil() / Math.floor() / Math.round()  //向上/下/四捨五入
3.Math.random()  //返回大於等於0小於1的隨機數
4.Math.abs() //返回參數的絕對值
5.Math.pow(num,power) // 返回num的power次冪
6.Math.sqrt(num) // 返回num的平方根
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章