JS高階技巧彙總
更新時間:2017年11月09日12:26:37
1、函式節流
場景:監聽頁面滾動到距離底部小於等於10px,觸發請求分頁資料;但監聽滾動事件,每滾動一幀會觸發一次函式,當用戶快速滾動頁面到達底部,會連續觸發10次請求,因此需要設定,在具體的時間(比如1000ms)內,只能觸發一次函式;
函式節流技術:解決頻繁觸發函式效能問題
請求資料的函式:getDate(){}
執行函式的方案:
clearTimeout(this.getDateTimer);
this.getDateTimer = setTimeout(()=>{
this.getDate();
},1000)
函式節流技術引發的問題,每次請求都需要在延遲1000ma後才能執行,能否先請求,後延時,延時未過,不進行下一次請求?
優化方案:
定義變數並初始化:let delayTieout = true;
執行函式的方案:
if(delayTimeout){
this.getData();
}
delayTimeout = false;
clearTimeout(this.getDateTimer);
this.getDateTimer = setTimeout(()=>{
delayTimeout = true;
},1000)
這個方案,保證第一次會實時執行請求資料的函式,但第二次執行只能在1000ms後才能觸發;
2、資料運算
資料轉換:+‘1’將String型別資料轉換成Number;‘’+1將Number型別的資料轉換成String型別
0.1+0.2=0.30000000000000004、2.4/0.8=2.9999999999999996的問題,這是JavaScript浮點運算的自身的問題。 處理方案:先將結果相加,然後用toFixed(2)精確兩位小數轉換成字串,再轉成Number型別,如下:
+((0.1+0.2).toFixed(1));
3、自執行函式
!(function(n){
console.log(n);//window物件
}(window));
4、用HTML屬性data-*獲取HTML中DOM元素的索引
問題:如下,輪播圖結構,如何獲取當前輪播圖片li標籤的索引,可以用到HTML新屬性data-*
<ul>
<li></li>
<li></li>
<li></li>
...
</ul>
改變DOM結構如下:
<ul>
<li data-index='0'></li>
<li data-index='1'></li>
<li data-index='2'></li>
...
</ul>
獲取當前輪播圖索引的方法:
let index = $('ul>li').attr('data-index');
5、switch 語句的高階用法
未完,待續...
相關推薦
JS高階技巧彙總
更新時間:2017年11月09日12:26:37 1、函式節流 場景:監聽頁面滾動到距離底部小於等於10px,觸發請求分頁資料;但監聽滾動事件,每滾動一幀會觸發一次函式,當用戶快速滾動頁面到達底部,會連續觸發10次請求,因此需要設定,在具體的時間(比如1000
12 個CSS高階技巧彙總
下面這些CSS高階技巧,一般人我可不告訴他哦。 使用 :not() 在選單上應用/取消應用邊框 給body新增行高 所有一切都垂直居中 逗號分隔的列表 使用負的 nth-child 選擇專案 對圖示使用SVG 優化顯示文字 對純CSS滑塊使
js高階技巧總結之高階函式和防篡改物件
高階函式 1.安全的型別檢測 談到型別檢測,可能大家首先想到的就是typeof 或者 instanceof (檢測陣列Array.isArray(arr))等這些方式,但是這些方法都有自己的侷限性,比如說Safari(直至第四版)對正則使用typeof
css高階技巧彙總
1、彩色照片顯示黑白照片 img.desaturate{ filter:grayscale(100%); -webkit-filter:grayscale(100%); -moz-filter:grayscale(100%);
js高階技巧之惰性載入函式
開發十年,就只剩下這套架構體系了! >>>
js高階技巧之柯里化
開發十年,就只剩下這套架構體系了! >>>
js高階技巧之函式繫結
開發十年,就只剩下這套架構體系了! >>>
js高階技巧之凍結物件
開發十年,就只剩下這套架構體系了! >>>
js高階技巧之函式節流
開發十年,就只剩下這套架構體系了! >>>
js高階技巧之密封物件
開發十年,就只剩下這套架構體系了! >>>
js高階技巧之不可擴充套件物件
開發十年,就只剩下這套架構體系了! >>>
JS進階篇--JS陣列reduce()方法詳解及高階技巧
去除巢狀的思路: 用遞迴、reduce()、concat()來實現。 遞迴解決多層巢狀,reduce()解決每層陣列的迭代拼接,concat()來拼接陣列即拆除一層巢狀。 let sum = [0, 1, 2, 3].reduce(function(acc, val)
JS紅寶書---高階技巧
1.安全的型別檢測 -----(1) 內建的JS型別檢測機制並不是完全可靠的。 typeof有時會導致檢測的資料型別不是可靠的結果。 instanceof在存在多個全域性作用域的情況下無法得到準確的結果。 eg: var isArray = value instanceof Array; 返
js之高階技巧
安全的型別檢測 js內建的型別檢測方法並不安全。 ①typeOf 不能用於檢測array只能返回object,不能檢測null只能返回object,但是出乎意料的是可以檢測symbol、function和undefined。型別返回值都是字串、而且都是小寫打頭。 ②in
js高階函數
sci 函數 轉換 下一個 arr lte def 高階函數 不同的 map()方法定義在JavaScript的Array中,我們調用Array的map()方法,傳入我們自己的函數,就得到了一個新的Array作為結果: function pow(x) { retur
js小技巧
math 最大值 個數 bsp floor time return 向下取整 set 記錄了一些js的小技巧: 1、用math.max()方法來設定最大值 var a = math.max(b,v); 這樣b或者v++不能超過另外一個不變的值,同理Math.min
js小技巧--摘錄1
拼接字符串 inpu www. bar http intern ply bit contains 原文地址https://github.com/loverajoel/jstips 1、數組中插入元素 a.尾部追加 var arr = [1,2,3,4,5]; var ar
javascript專精--常見高階技巧
原文:https://blog.csdn.net/mapbar_front/article/details/78484963 1、型別檢測JavaScript中提供兩種型別檢測語法——typeof、instanceof。但是這兩種都有一定的缺陷。 typeof僅僅適用於基本型別的
JS 高階篇
1. Function 物件 Java的方法僅僅是方法,但是JS的方法是一個物件,可以作為引數! Function 物件引入 Function 是 js 的方法物件,可以用 Function 例項化出任何 js 方法物件; 用 Function 建立方法物件
JS陣列方法彙總
工具類方法 Array.from() :從一個類似陣列或者可迭代物件中建立一個新的陣列例項。用一種更通俗易懂的方式來說,就是Array.from方法用於將兩類物件轉為真正陣列:類陣列物件(array-like object)和可遍歷(iterable)的物件。實際應用中,常見的類陣列物件是 DOM 操作返回