1. 程式人生 > >JS高階技巧彙總

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 操作返回