亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

js 拾遺

AlphaWatch / 1260人閱讀

摘要:最近復(fù)習(xí)教程,發(fā)現(xiàn)好多沒(méi)記住的,特以此記和區(qū)別,函數(shù)不能帶參數(shù),屬于靜態(tài)方法獲取時(shí)間戳獲取這個(gè)月有多少天,傳入年份和月份獲取這個(gè)月最后一天是星期幾獲取這個(gè)月第一天是星期幾點(diǎn)字符匹配除回車換行行分隔符和段分隔符以外的所有字符表示匹配一切字符

最近復(fù)習(xí) JavaScript 教程,發(fā)現(xiàn)好多沒(méi)記住的,特以此記~

Date

Dtae() 和 new Date() 區(qū)別,Date() 函數(shù)不能帶參數(shù),屬于靜態(tài)方法

new Date()*1 === new Date().getTime() === Date.now() // 獲取時(shí)間戳
new Date(y, m, 0).getDate() // 獲取這個(gè)月有多少天,傳入年份和月份
new Date(y, m, 0).getDay() // 獲取這個(gè)月最后一天是星期幾
new Date(y, m-1, 1).getDay() // 獲取這個(gè)月第一天是星期幾
RegExp

. 點(diǎn)字符匹配除回車(r)、換行(n) 、行分隔符(u2028)和段分隔符(u2029)以外的所有字符

[^] 表示匹配一切字符,其中包括換行符

str.replace(/2/gi, "1") 第二個(gè)參數(shù)可以使用美元符號(hào)$,用來(lái)指代所替換的內(nèi)容

$&:匹配子字符串
$`:匹配結(jié)果前面的文本
$":匹配結(jié)果后面的文本
$n:匹配成功的第n組內(nèi)容,n是從1開始的自然數(shù)。
$$:指代美元符號(hào)$。
"hello world".replace(/(w+)s(w+)/, "$2 $1")
// "world hello"
"abc".replace("b", "[$`-$&-$"]")
// "a[a-b-c]c"
JSON.stringify

console.log(JSON.stringify(obj, null, 2)) 接受三個(gè)參數(shù),打印對(duì)象格式化

參數(shù)一
如果對(duì)象的屬性是undefined、函數(shù)或 XML 對(duì)象,該屬性會(huì)被JSON.stringify過(guò)濾
如果數(shù)組的成員是undefined、函數(shù)或 XML 對(duì)象,則這些值被轉(zhuǎn)成null
正則對(duì)象會(huì)被轉(zhuǎn)成空對(duì)象
忽略對(duì)象的不可遍歷的屬性

參數(shù)二
接受一個(gè)數(shù)組,作為第二個(gè)參數(shù),指定需要轉(zhuǎn)成字符串的屬性,只對(duì)對(duì)象的屬性有效
還可以是一個(gè)函數(shù),用來(lái)更改JSON.stringify的返回值

參數(shù)三
如果是數(shù)字,表示每個(gè)屬性前面添加的空格(最多不超過(guò)10個(gè))
如果是字符串(不超過(guò)10個(gè)字符),則該字符串會(huì)添加在每行前面
JSON.stringify發(fā)現(xiàn)參數(shù)對(duì)象有toJSON方法,就直接使用這個(gè)方法的返回值作為參數(shù),而忽略原對(duì)象的其他參數(shù)

Error
new Error() // 拋出一個(gè)錯(cuò)誤
new SyntaxError() // 語(yǔ)法解析錯(cuò)誤
new ReferenceError() // 非法或不能識(shí)別的引用值,使用未聲明的變量
new TypeError() // 操作類型錯(cuò)誤,使用自身沒(méi)有的方法,let a = 22 a.sort() a 是 Number 類型而非數(shù)組
new RangeError() // 數(shù)值越界,Maximum call stack,調(diào)用一個(gè)不終止的遞歸函數(shù),計(jì)算的值超出最大范圍
new URIError() // encodeURIComponent() encodeURI() 等URI函數(shù)使用錯(cuò)誤
Array
"a" in ["a", 1] 
for in for of 
arr.push(1, 2, 3)
[1, 2, 3, 4, 5].splice(2) 分離成兩個(gè)數(shù)組 [1, 2] [3, 4, 5] 

es6 明確把空位轉(zhuǎn)成 undefined
es5 有的跳過(guò)(forEach、filter、reduce、some、every)
map() 會(huì)跳過(guò)空位,但會(huì)保留這個(gè)值
join()toString() 會(huì)將空位視為 undefined ,而 undefinednull 會(huì)被處理成空字符串

Number
function rand(num) { 
    let seed = Date() * 1;
    seed = (seed * 9301 + 49297) % 233280; // 為何使用這三個(gè)數(shù)?
    let rc = seed / (233280.0);
    return Math.ceil(rc * num);
}
rand(10) // 取1~10的隨機(jī)數(shù)

0 / 0 NaN 
0 / 1 0 
1 / 0 Infinity

es6 分別用前綴 0b 0o 0x 表示 2 8 16 進(jìn)制

base64 
    0~9 a~z A~Z "+" "/"    10 + 26 + 26 + 2 = 64
    不足補(bǔ)x00(零值字節(jié)),然后在末尾加上1個(gè)或2個(gè)=號(hào),表示補(bǔ)了多少個(gè)零值字節(jié)

Number.MAX_SAFE_INTEGER 9007199254740991 表示能夠精確表示的最大整數(shù)
Number.MIN_SAFE_INTEGER -9007199254740991 表示能夠精確表示的最小整數(shù)

Math

ES6 在 Math 對(duì)象上新增了 17 個(gè)與數(shù)學(xué)相關(guān)的方法。所有這些方法都是靜態(tài)方法,只能在 Math 對(duì)象上調(diào)用

Math.trunc() // 去除一個(gè)數(shù)的小數(shù)部分,返回整數(shù)部分
Math.trunc(4.1) // 4
Math.trunc(-4.1) // -4
Math.hypot(3, 4) // 5 返回所有參數(shù)的平方和的平方根
Math.cbrt(8) // 2 計(jì)算一個(gè)數(shù)的立方根

es6 新增指數(shù)運(yùn)算符 2 ** 2 ** 2 => Math.pow(2, 4)
這個(gè)運(yùn)算符的一個(gè)特點(diǎn)是右結(jié)合,而不是常見的左結(jié)合。多個(gè)指數(shù)運(yùn)算符連用時(shí),是從最右邊開始計(jì)算的。

"hello"[1] // "e" 直接對(duì)字符串使用方括號(hào)運(yùn)算符,僅能獲取操作
String

substring 類似slice,但是使用規(guī)則違反直覺(jué),因此不建議使用substring方法,應(yīng)該優(yōu)先使用slice

str.charAt() // 下標(biāo)
str.charCodeAt() // 十進(jìn)制 Unicode 碼點(diǎn)
String.fromCharCode(97) // 逆操作
str.substr(0, 4) // 從零開始取4個(gè)
str[0]
str.concat(str2)
str1.localeCompare(str2) // Unicode 碼點(diǎn)比較大小
事件循環(huán)

參考文章

宏任務(wù)                   瀏覽器 Node
I/O                     ?   ?
setTimeout              ?   ?
setInterval             ?   ?
setImmediate            ?   ?
requestAnimationFrame   ?   ?

微任務(wù)                   瀏覽器 Node
process.nextTick        ?   ?
MutationObserver        ?   ?
Promise.then            ?   ?
斐波那契數(shù)列
// 性能最好
function add(n) { 
    let res1 = 1;
    let res2 = 1;
    let sum = res2 
    for (let i = 2; i < n; i++) {
        sum = res1 + res2
        res1 = res2 
        res2 = sum 
    }
    return sum
}

// 把算過(guò)的存起來(lái)
var cache = []
function add(n) { 
    if (n <= 2) {
        cache[n] = 1
        return 1
    }
    if (cache[n] !== undefined) {
        return cache[n]
    }
    cache.push(add(n-1) + add(n-2))
    return cache[n]
}

// 最簡(jiǎn)單,但是性能不行
function add() {
    if (n <= 2) {
        return 1
    }
    return add(n-1) + add(n-2)
}
嚴(yán)格模式
1. 變量必須顯示聲明
2. 禁用 with
3. 進(jìn)制刪除變量 // delete x => 語(yǔ)法錯(cuò)誤 
4. 禁用 fn.caller fn.arguments // 報(bào)錯(cuò) 
5. 對(duì)象不能有重名的屬性
6. 函數(shù)不能有重名的參數(shù)
7. 進(jìn)制八進(jìn)制表示法 02 
Flex

flex-grow flex-shrink flex-basis 放大 縮小占據(jù)的空間大小

flex: 0 1 auto; // 默認(rèn) 
flex: 0 0 auto; // flex: none;
flex: 1 1 auto; // flex: auto;
flex: 1 1 0%; // flex: 1;
Babel

AST 抽象語(yǔ)法樹

babel-core 
    通過(guò) babylon 把 es6 解析成 AST
    babel-traverse 對(duì) ATS樹進(jìn)行遍歷轉(zhuǎn)譯得到新的 AST樹 
    babel-generator 讀取 AST樹并將其轉(zhuǎn)換為代碼和源碼映射

對(duì)于新的 API、新的屬性,兩種處理方式
    babel-polyfill 把 es6環(huán)境整體引入到代碼中
        regenerator-runtime、core-js 

    babel-plugin-transform-runtime 按需引入
        babel-runtime 
            regenerator-runtime、core-js 
        babel-helpers 只引入單個(gè),通過(guò)此插件可以把多次引入變成一個(gè),減少代碼體積
Webpack

把項(xiàng)目看成一個(gè)整體,通過(guò)給定的主文件,webpack 從這個(gè)主文件的入口開始找到項(xiàng)目中的所有依賴文件,然后使用
各種 loader 轉(zhuǎn)化、插件處理、文件處理,最后打包輸出到一個(gè)指定的文件夾中

webpack 打包優(yōu)化措施

webpack.DllPlugin 拆分固定死的依賴文件,因?yàn)椴粫?huì)變化所以可以預(yù)先打包好,后面直接引用
HappyPack 多進(jìn)程,默認(rèn)開啟三個(gè)
babel-loader 開啟緩存 cacheDirectory: true 
exclude include 
noParse: /^(vue|vue-router|vuex|vuex-router-sync|axios)$/
css 用 contenthash
    hash 每次構(gòu)建都會(huì)變
    chunkhash .vue 文件變了就會(huì)變
    contenthash 只有 css 變了才會(huì)變
快速排序、冒泡排序
function fast(arr) { // 快速排序
    if (arr.length <= 1) { // 終止遞歸條件
        return arr
    }
    
    let index = Math.floor(arr.length / 2) // 獲取中間值下標(biāo)
    let val = arr.splice(index, 1)[0] // 刪除且獲取返回值
    let left = []
    let right = []

    for (let i = 0, len = arr.length; i < len; i++) { // 數(shù)組長(zhǎng)度已經(jīng)發(fā)生變化
        if (arr[i] < val) {
            left.push(arr[i]) // 小的放左邊
        } else {
            right.push(arr[i]) // 大的放右邊
        }
    }

    return fast(left).concat([val], fast(right)) // 合并數(shù)組
}

function maop(arr) { // 冒泡排序
    for (let i = 0, len = arr.length; i < len - 1; i++) {
        let flag = 0 

        for (let j = 0; j < len - i - 1; j++) {
            if (arr[j] > arr[j+1]) {
                let temp = arr[j]
                arr[j] = arr[j+1]
                arr[j+1] = temp 
                flag = 1
            }
        }

        if (flag === 0) {
            return arr
        }
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/105132.html

相關(guān)文章

  • 函數(shù)調(diào)用拾遺

    摘要:如果嵌套函數(shù)作為函數(shù)調(diào)用,指向全局對(duì)象或。構(gòu)造函數(shù)調(diào)用在圓括號(hào)里包含實(shí)參列表,則先計(jì)算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。構(gòu)造函數(shù)通常不使用,當(dāng)執(zhí)行完函數(shù)體后,會(huì)顯示返回。其中可以用來(lái)間接調(diào)用函數(shù)。 函數(shù)調(diào)用總結(jié) 通常構(gòu)成函數(shù)主題的JS代碼在定義之時(shí)是不會(huì)被執(zhí)行的,只有在調(diào)用函數(shù)是才會(huì)被執(zhí)行有4種方式可以調(diào)用JS函數(shù) 函數(shù)調(diào)用 //定義函數(shù) factorial function...

    elisa.yang 評(píng)論0 收藏0
  • 函數(shù)調(diào)用拾遺

    摘要:如果嵌套函數(shù)作為函數(shù)調(diào)用,指向全局對(duì)象或。構(gòu)造函數(shù)調(diào)用在圓括號(hào)里包含實(shí)參列表,則先計(jì)算實(shí)參表達(dá)式,這與函數(shù)調(diào)用和方法調(diào)用是一致的。構(gòu)造函數(shù)通常不使用,當(dāng)執(zhí)行完函數(shù)體后,會(huì)顯示返回。其中可以用來(lái)間接調(diào)用函數(shù)。 函數(shù)調(diào)用總結(jié) 通常構(gòu)成函數(shù)主題的JS代碼在定義之時(shí)是不會(huì)被執(zhí)行的,只有在調(diào)用函數(shù)是才會(huì)被執(zhí)行有4種方式可以調(diào)用JS函數(shù) 函數(shù)調(diào)用 //定義函數(shù) factorial function...

    kel 評(píng)論0 收藏0
  • 前端技能拾遺

    摘要:本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的解釋語(yǔ)言和編譯型語(yǔ)言解釋型語(yǔ)言與編譯型語(yǔ)言的區(qū)別翻譯時(shí)間的不同。命令會(huì)有變量聲明提前的效果。硬綁定參考不同是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用則是立即調(diào)用。 本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的~ 解釋語(yǔ)言和編譯型語(yǔ)言 解釋型語(yǔ)言與編譯型語(yǔ)言的區(qū)別翻譯時(shí)間的不同。編譯型語(yǔ)言在程序執(zhí)行之前...

    lyning 評(píng)論0 收藏0
  • 前端技能拾遺

    摘要:本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的解釋語(yǔ)言和編譯型語(yǔ)言解釋型語(yǔ)言與編譯型語(yǔ)言的區(qū)別翻譯時(shí)間的不同。命令會(huì)有變量聲明提前的效果。硬綁定參考不同是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用則是立即調(diào)用。 本文主要是對(duì)自己前端知識(shí)遺漏點(diǎn)的總結(jié)和歸納,希望對(duì)大家有用,會(huì)持續(xù)更新的~ 解釋語(yǔ)言和編譯型語(yǔ)言 解釋型語(yǔ)言與編譯型語(yǔ)言的區(qū)別翻譯時(shí)間的不同。編譯型語(yǔ)言在程序執(zhí)行之前...

    Vultr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<