關(guān)于JS數(shù)組追加數(shù)組采用push.apply的問題
a = new Array();
b = new Array(125624);
a.push.apply(a, b);
以上的代碼在mac的chrome下拋出了如下的異常
Uncaught RangeError: Maximum call stack size exceeded
如果把數(shù)組改為b = new Array(125623);小一個(gè)元素居然就好了,測試了一下其他瀏覽器也都有大數(shù)組才出錯(cuò)的問題,但不同瀏覽器臨界值還各異。
搜索了http://stackoverflow.com/questions/1374126/how-to-append-an-array-to-an-existing-javascript-array/17368101#17368101 發(fā)現(xiàn)也有人遇到這樣的坑:
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);
}
給出的建議是老老實(shí)實(shí)用forEach,不僅可以避免大數(shù)組的異常問題,并且從性能角度考慮forEach也是最快的

這個(gè)小坑給了我兩點(diǎn)思考:
1、有些花哨的用法如a.push.apply(a, b);還是用于面試題裝逼就行,實(shí)戰(zhàn)上還是多走老實(shí)路線免得遇到異常和性能的坑,例如小數(shù)量的如這篇的這個(gè)幾十個(gè)節(jié)點(diǎn)的3D網(wǎng)絡(luò)拓?fù)鋸椈刹季掷油嫱娴故菦]問題,遇到真正大數(shù)據(jù)量如這篇中的HT for Web的這個(gè)3D大數(shù)據(jù)量性能例子才能考驗(yàn)出問題。
2、http://stackoverflow.com/questions/1374126 從stackoverflow找答案時(shí)不要僅盯著投票最多的,真理往往掌握在少數(shù)人手中,下圖259票的回答是個(gè)坑,34票的才是最完美的分析:


- JavaScript數(shù)組函數(shù)unshift、shift、pop、push使用實(shí)例
- js 數(shù)組操作之pop,push,unshift,splice,shift
- Js數(shù)組的操作push,pop,shift,unshift等方法詳細(xì)介紹
- JS數(shù)組合并push與concat區(qū)別分析
- JavaScript使用push方法添加一個(gè)元素到數(shù)組末尾用法實(shí)例
- JS數(shù)組方法push()、pop()用法實(shí)例分析
- JS數(shù)組方法shift()、unshift()用法實(shí)例分析
- JavaScript使用pop方法移除數(shù)組最后一個(gè)元素用法實(shí)例
- JS數(shù)組push、unshift、pop、shift方法的實(shí)現(xiàn)與使用方法示例
相關(guān)文章
BootStrap模態(tài)框和select2合用時(shí)input無法獲取焦點(diǎn)的解決方法
在bootstrap的模態(tài)框里使用select2插件,會導(dǎo)致select2里的input輸入框沒有辦法獲得焦點(diǎn),沒有辦法輸入。怎么解決這個(gè)問題呢?下面小編給大家?guī)砹薆ootStrap模態(tài)框和select2合用時(shí)input無法獲取焦點(diǎn)的解決方法,一起看看吧2017-09-09
JS彈窗 JS彈出DIV并使整個(gè)頁面背景變暗功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS彈窗 JS彈出DIV并使整個(gè)頁面背景變暗功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-04-04
IScroll5實(shí)現(xiàn)下拉刷新上拉加載的功能實(shí)例
本篇文章主要介紹了IScroll5實(shí)現(xiàn)下拉刷新上拉加載的功能實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
JavaScript正則表達(dá)式替換字符串中圖片地址(img src)的方法
這篇文章主要介紹了JavaScript正則表達(dá)式替換字符串中圖片地址(img src)的方法,結(jié)合實(shí)例形式分析了JS正則替換的常用技巧與注意事項(xiàng),需要的朋友可以參考下2017-01-01
使用dynatrace-ajax跟蹤JavaScript的性能
DynaTrace 致力于分析后臺應(yīng)用性能的表現(xiàn)已經(jīng)好幾年了,最近,他們通過發(fā)布dynaTrace Ajax Edition進(jìn)入了前端性能分析領(lǐng)域. 它是一個(gè)運(yùn)行在IE下的BHO免費(fèi)工具. 雖然我喜歡Firefox和它下面的所有插件,但我知道基于IE的測試和調(diào)試也是很重要的。2010-04-04
d3.js中冷門卻實(shí)用的內(nèi)置函數(shù)總結(jié)
D3.js是一個(gè)JavaScript庫,它可以通過數(shù)據(jù)來操作文檔。D3可以通過使用HTML、SVG和CSS把數(shù)據(jù)鮮活形象地展現(xiàn)出來。d3.js其實(shí)提供了很多內(nèi)置的函數(shù),可以卻被大家忽略了,下面這篇文章就來給大家詳細(xì)介紹了d3.js中冷門卻實(shí)用的一些內(nèi)置函數(shù),需要的朋友可以參考借鑒。2017-02-02
分享JavaScript與Java中MD5使用兩個(gè)例子
這篇文章主要為大家分享了JavaScript與Java中MD5使用兩個(gè)例子,2015-12-12

