JS中三類迴圈對比及效能分析

2021-10-20 14:29:10 字數 2212 閱讀 6928

/*

* 易錯基礎題:js中三類迴圈對比及效能分析?

* + for迴圈及foreach底層原理

* for迴圈是自己控制迴圈過程

* q1:基於var宣告的時候,for和while效能差不多「不確定迴圈次數的情況下使用while」

* q2:基於let宣告的時候,for迴圈效能更好「原理:沒有創造全域性不釋放的變數」

* q3:重寫for-each

* + for in迴圈的bug及解決方案

* q1:迭代所有可列舉屬性「私有&公有」,按照原型鏈一級級查詢很耗效能

* q2:問題很多:不能迭代symbol屬性、迭代順序會以數字屬性優先、公有可列舉的屬性也會進行迭代

* + for of迴圈的底層機制

* q1:迭代器iterator規範「具備next方法,每次執行返回乙個物件,具備 value/done 屬性」

* q2:讓物件具備可迭代性並且使用for of迴圈

*/let arr =

newarray

(9999999).

fill(0

);// console.time('for~~');

// for (let i = 0; i < arr.length; i++) {}

// console.timeend('for~~');

// console.time('while~~');

// let i = 0;

// while (i < arr.length)

// console.timeend('while~~');

/* array.prototype.foreach = function foreach(callback, context)

};*/

// console.time('foreach~~');

// arr.foreach(function (item) {});

// console.timeend('foreach~~');

// for in效能很差:迭代當前物件中所有可列舉的屬性的「私有屬性大部分是可列舉的,公有屬性也有部分是可列舉的」 查詢機制上一定會搞到原型鏈上去

// console.time('for in~~');

// for (let key in arr) {}

// console.timeend('for in~~');

// 問題一:遍歷順序以數字有先

// 問題二:無法遍歷symbol屬性

// 問題三:可以遍歷到公有中可列舉的

/* object.prototype.fn = function fn() {};

let obj = ;

// for (let key in obj)

let keys = object.keys(obj);

if (typeof symbol !== "undefined") keys = keys.concat(object.getownpropertysymbols(obj));

keys.foreach(key => );

*/// iterator 迭代器

// 部分資料結構實現了迭代器規範

// + symbol.iterator

// + 陣列/部分類陣列/set/map...「物件沒有實現」

// for of迴圈的原理是按照迭代器規範遍歷的

/* arr = [10, 20, 30];

arr[symbol.iterator] = function () ;

}return ;}};

}; */

// 1.let itor=arr[symbol.iterator]();

// 2.itor.next()

// ...

// console.time('for of~~');

// for (const val of arr)

// console.timeend('for of~~');

/* // 類陣列物件「預設不具備迭代器規範」

let obj = ;

obj[symbol.iterator] = array.prototype[symbol.iterator];

for (let val of obj) */

C 中三類Timer的比較

最近在做乙個leapmotion的作業,由於自帶的listener對的frame重新整理識別速度太快,所以需要實現乙個功能 每隔一段時間 自己定義 來呼叫識別新的frame的函式。其實有乙個invoke 的方法可以實現這種功能,但是自己用不好,裡面的引數讓人頭疼。實現這種功能的方法肯定有很多種,我最...

關係模型中三類完整性約束以及解釋

1 實體完整性 所謂的實體完整性就是指關係 所謂的關係就是表 的主碼不能取空值 比如學生表的主碼通常是取學號為主碼 2 參照完整性 是指參照關係中每個元素的外碼要麼為空 null 要麼等於被參照關係中某個元素的主碼 比如今天是9月2日是開學日,大學新生剛來報道,在學生表裡,有的學生可能還沒來得及分配...

關係的三類完整性約束

規則2.1實體完整性規則 entity integrity 若屬性a是基本關係r的主屬性,則屬性a不能取空值 空值就是 不知道 或 不存在 或 無意義 的值 例 選修 學號,課程號,成績 學號 課程號 為主碼 學號 和 課程號 兩個屬性都不能取空值 實體完整性規則的說明 1 實體完整性規則是針對基本...