原创 循環異步事件

for(var i=0 ;i<5; i++){setTimeout(function(){console.log(i)},0)} //5,5,5,5,5 此處i是全局作用域 每次循環 新的i都會沖刷掉舊的i 好比皇位更替 for(

原创 JS取整的四種方法

  parseInt() 該方法取整是把小數點後面小數去掉,只保留整數部分。如果要取整的數爲正時,類似Math.floor();爲負時,類似Math.ceil()   Math.round() 四捨五入取整   Math.floor() 向

原创 node.js的事件輪詢機制

藉助libuv庫實現的 概括事件輪詢機制:分爲六個階段1.timers 定時器階段計時和執行到點的定時器回調函數 2.pending callbacks某些系統操作(例如TCP錯誤類型) 3.idle,prepare 4.poll輪詢階段(

原创 websocket協議

傳統的http協議有個缺點,就是隻能由客戶端不斷地主動發起請求,服務端才把信息返回到客戶端,服務端是不會主動給客戶端發消息的,這就是傳統的單向請求, 而websocket是雙向的,在單個 TCP 連接上進行全雙工通訊,前後端會有一次握手,握

原创 從url輸入網址

面試題:從一個url地址到頁面渲染完成 發生了什麼 1.DNS解析 將域名地址解析爲IP地址瀏覽器的DNS緩存系統DNS緩存路由器DNS緩存網絡運營商DNS緩存遞歸搜索2.TCP鏈接 TCP三次握手第一次握手,由瀏覽器發起,告訴服務器

原创 函數節流和防抖

函數節流:一個函數執行一次後 只有大於設定的執行週期後纔會執行第二次 需要頻繁觸發的函數,處於性能角度考慮,在規定時間內,只讓函數觸發的第一次生效,後面不生效 //節流函數 //fn 要被節流的函數//delay 規定的時間 func

原创 Vuex

組件之間小範圍共享數據的方式1.父向子傳值:v-bind2.子向父傳值:v-on 事件綁定3.兄弟組件之間的數據共享 EventBus$on 接受數據的那個組件$emit發送數據的那個組件 使用vuex的好處1.能夠集中管理共享的數據,易

原创 axios的攔截器

應用場景1.比如config中的一些信息不符合要求2.比如每次發送網絡請求時,希望在界面顯示一個請求圖標3.某些網絡請求(比如登錄token),必須攜帶一些特殊的信息

原创 Vue爲什麼要有插槽

一般來說父組件只能複用子組件但是沒辦法改變子組件的內容和樣式 總之就是 你可以用我但是不可以改變我 就像買車一樣 不能自己去決定車的配置、外觀、性能、尺寸,這些都是廠家自己設計好然後批量生產的 大家買下都是一樣的 而插槽的出現就提供了父組件

原创 豆瓣電影API接口

獲取正在熱映的電影:https://douban.uieee.com/v2/movie/in_theaters訪問參數:start : 數據的開始項 count:單頁條數 city:城市 獲取電影Top250:https://douban.

原创 JS求數組中最小值

var arr = [34, 12, 55, 27];console.log(Math.min.apply(null, arr)) // apply()console.log(Math.min(...arr)) //

原创 JS性能測試

循環一億次所需時間 console.time("A") for(var i=0;i<100000000;i++){} console.timeEnd('A')

原创 JS合併數組

var arr1=new Array("1","2","3"); var arr2=new Array("4","5","6"); Array.prototype.push.apply(arr1,arr2); console.lo

原创 手寫 webpack4.x初始化工程

1.全局安裝webpack4.x cnpm install webpack webpack-cli --g 2.初始化npm cnpm init --y(默認都是yes) 3.安裝依賴包 cnpm install 4.在

原创 apply call的區別

apply() 和 call() 兩者沒有太大的區別 都是可以改變作用域 主要就是傳的參數不同apply() 必須要求傳的是數組call()要求一個一個單個的傳