摘要:倒數第三位加上倒數第三位,再加上進位,如果大于等于,產生進位。。。。第一循環結束,進行第二循環。第二循環是指,數字較小或者長度較短的數字已經加完結束了。拖拽節流一個函數只有在大于執行周期時才執行,周期內調用不執行。
實現promise
const PENDING = "pending" const RESOLVED = "resolved" const REJECTED = "rejected" function MyPromise(fn){ const that = this that.state = PENDING that.value = null that.resolvedCallbacks = [] that.rejectedCallbacks = [] function resolve(value) { if(that.state === PENDING) { that.state = RESOLVED that.value = value that.resolvedCallbacks.map(cb => cb(that.value)) } } function reject(value) { if(that.state === PENDING){ that.state = REJECTED that.value = value; that.rejectedCallbacks.map(cb => cb(that.value)); } } try { fn(resolve, reject) } catch (e) { reject(e) } } MyPromise.prototype.then = function(onFulfilled, onRejected) { const that = this //對傳入的兩個參數做判斷,如果不是函數將其轉為函數 onFulfilled = typeof onFulfilled === "function" ? onFulfilled : v => v // onFulfilled = v => v onRejected = typeof onRejected === "function" ? onRejected : r => { throw r } if(that.state === PENDING) { that.resolvedCallbacks.push(onFulfilled) that.rejectedCallbacks.push(onRejected) } else if(that.state === RESOLVED) { onFulfilled(that.value) } else { onRejected(that.value) } } new MyPromise((resolve, reject) => { setTimeout(() => { resolve("成功的回調數據") }, 1000) }).then(value => { console.log("Promise.then: ", value) })大數相加
1.末尾加上末尾,如果大于等于10,產生進位。如果沒有進位就是0.2.倒數第二位加上倒數第二位,再加上進位,如果大于等于10,產生進位。3.倒數第三位加上倒數第三位,再加上進位,如果大于等于10,產生進位。。。。直到加完數字小的位數。第一循環結束,進行第二循環。第二循環是指,數字較小(或者長度較短)的數字已經加完結束了。剩下的就是第一循環加完后,剩下的進位與剩下的相加。
//bigNumberA和bigNumberB使用字符串存儲,否則會自動轉化為科學計數 let bigNumberAdd = (bigNumberA, bigNumberB) => { let A = (bigNumberA + "").split(""); let B = (bigNumberB + "").split(""); let aLen = A.length, bLen = B.length, cLen = Math.max(aLen, bLen) + 1; let result = [], prefix = 0; for (let i = 0; i< cLen -1; i++ ) { let a = aLen - i - 1 >= 0 ? parseInt(A[aLen - i - 1]) : 0, b = bLen - i - 1 >= 0 ? parseInt(B[bLen - i - 1]) : 0; result[i] = (a + b + prefix) % 10; prefix = Math.floor((a + b + prefix) / 10); } return result.reverse().join(""); }; bigNumberAdd("45486646468484544661134868968","544545867466464646");純js寫一個動畫,5s由快到慢,速度自定義
animation ease
實現一個三角形.triangle{ width:0; height:0; border-left:50px solid transparent; border-right:50px solid transparent; border-buttom:100px solid yellow; }快排是怎樣實現的 冒泡排序? 手寫二分查找 手寫求一個字符串中出現次數最多且長度最長的子串 反轉鏈表
var reverseList=function(head){ if(head===null||head.next===null){ return head; } var new_head=reverseList(head.next); head.next.next=head; head.next=null; return new_head; };圖片懶加載怎么做? 防抖
函數防抖就是在函數需要頻繁觸發的情況下,只有足夠的空閑時間,才執行一次。
典型應用
百度搜索框在輸入稍有停頓時才更新推薦熱詞。
拖拽
function debounce(handler, delay){ delay = delay || 300; var timer = null; return function(){ var _self = this, _args = arguments; clearTimeout(timer); timer = setTimeout(function(){ handler.apply(_self, _args); }, delay); } }節流
一個函數只有在大于執行周期時才執行,周期內調用不執行。好像水滴積攢到一定程度才會觸發一次下落一樣。
典型應用:
搶券時瘋狂點擊,既要限制次數,又要保證先點先發出請求
窗口調整
頁面滾動
function throttle(handler, wait){
wait = wait || 300; var lastTime = 0; return function(){ var _self = this, _args = arguments; var nowTime = new Date().getTime(); if((nowTime - lastTime) > wait){ handler.apply(_self, _args); lastTime = nowTime; } } }js中最大整數是多少?
9開頭
數組扁平化是指將一個多維數組變為一維數組[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]
遞歸法:
function flatten(arr) { let res = []; arr.map(item => { if(Array.isArray(item)) { res = res.concat(flatten(item)) } else { res.push(item); } }) return res; }js如何存儲一個數據?
cookie,session,localStorage,sessionStorage
正則表達式 nginx的適合做什么,反向代理,正向代理 http 中如果想要使用緩存需要設置哪些字段Expires、Cache-Control、(強緩存)
Last-Modified、Etag。(協商緩存)
map、filter、concat、slice
解析302、303、304、404、400狀態碼 對稱加密和非對稱加密有哪些區別?又有哪些應用 websocket 如何傳輸文件WebSocket發送圖片時候,我建議是進行圖片壓縮,最好把圖片壓縮在100K以內。
websocket發送大文件的時候,經過我的測試,如果客戶端連接的服務器端的量比較大,分段發送,然后保存到數據庫。
進程是操作系統資源分配的基本單位,而線程是任務調度和執行的基本單位。
個程序至少有一個進程,一個進程至少有一個線程。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104316.html
摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現在已經一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現將已經寫好的文章整理一個目錄,方便更多的小伙伴去學習。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:構造函數通常首字母大寫,用于區分普通函數。這種關系常被稱為原型鏈,它解釋了為何一個對象會擁有定義在其他對象中的屬性和方法。中所有的對象,都有一個屬性,指向實例對象的構造函數原型由于是個非標準屬性,因此只有和兩個瀏覽器支持,標準方法是。 從這篇文章開始,復習 MDN 中級教程 的內容了,在初級教程中,我和大家分享了一些比較簡單基礎的知識點,并放在我的 【Cute-JavaScript】系...
摘要:如何讓根據拆箱轉換,以及的隱式轉換,可以如下寫為什么計算機中所有的數據都是以二進制存儲的,所以在計算機計算時要把數據先轉換成二進制進行計算,然后把計算結果轉換成十進制。會存在精度丟失問題和的二進制都是以無線循環的小數的二進制的二進制 本想著記筆記里,但是筆記里沒有分類,還是以文章的形式,當個人總結吧,這一篇就當作JS基礎篇的記錄吧,有修改的和新增的持續更新~ 關于JS的一些小技巧 1:...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
摘要:全文為這些年,我曾閱讀深入理解過或正在閱讀學習即將閱讀的一些優秀經典前端后端書籍。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 全文為這些年,我曾閱讀、深入理解過(或正在閱讀學習、即將閱讀)的一些優秀經典前端/Java后端書籍。全文為純原創,且將持續更新,未經許可,不得進行轉載。當然,如果您喜歡這篇文章,可以動手點點贊或者收藏。 基礎 基礎書籍 進階 進階階段,深入學習的書...
閱讀 2493·2021-08-11 11:16
閱讀 2931·2019-08-30 15:55
閱讀 3335·2019-08-30 12:53
閱讀 1571·2019-08-29 13:28
閱讀 3269·2019-08-28 18:17
閱讀 940·2019-08-26 12:19
閱讀 2471·2019-08-23 18:27
閱讀 708·2019-08-23 18:17