国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

關于JS數組追加數組采用push.apply的問題

2019-11-20 14:35:40
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

a = new Array();
b = new Array(125624);                    
a.push.apply(a, b);


以上的代碼在mac的chrome下拋出了如下的異常

復制代碼 代碼如下:

Uncaught RangeError: Maximum call stack size exceeded


如果把數組改為b = new Array(125623);小一個元素居然就好了,測試了一下其他瀏覽器也都有大數組才出錯的問題,但不同瀏覽器臨界值還各異。

搜索了http://stackoverflow.com/questions/1374126/how-to-append-an-array-to-an-existing-javascript-array/17368101#17368101 發現也有人遇到這樣的坑:

復制代碼 代碼如下:

Array.prototype.extend = function (other_array) {
    /* you should include a test to check whether other_array really is an array */
    other_array.forEach(function(v) {this.push(v)}, this);  
}


給出的建議是老老實實用forEach,不僅可以避免大數組的異常問題,并且從性能角度考慮forEach也是最快的

這個小坑給了我兩點思考:

1、有些花哨的用法如a.push.apply(a, b);還是用于面試題裝逼就行,實戰上還是多走老實路線免得遇到異常和性能的坑,例如小數量的如這篇的這個幾十個節點的3D網絡拓撲彈簧布局例子玩玩倒是沒問題,遇到真正大數據量如這篇中的HT for Web的這個3D大數據量性能例子才能考驗出問題。

2、http://stackoverflow.com/questions/1374126 從stackoverflow找答案時不要僅盯著投票最多的,真理往往掌握在少數人手中,下圖259票的回答是個坑,34票的才是最完美的分析:

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深州市| 海南省| 卓资县| 柏乡县| 张家界市| 杭锦旗| 承德市| 修水县| 芒康县| 镶黄旗| 印江| 青龙| 嘉黎县| 绥德县| 宜良县| 西安市| 平顶山市| 潜江市| 襄城县| 名山县| 大新县| 加查县| 江都市| 梨树县| 邵阳县| 志丹县| 安宁市| 犍为县| 高尔夫| 开鲁县| 炎陵县| 长岛县| 庐江县| 壶关县| 时尚| 礼泉县| 灵丘县| 宿州市| 抚顺市| 湖北省| 师宗县|