最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于JS數(shù)組追加數(shù)組采用push.apply的問題

 更新時(shí)間:2014年06月09日 12:08:22   作者:  
JS數(shù)組追加數(shù)組沒有現(xiàn)成的函數(shù),這么多年我已經(jīng)習(xí)慣了a.push.apply(a, b);這種自以為很酷的,不需要寫for循環(huán)的寫法,一直也沒遇到什么問題,直到今天我要append的b是個(gè)很大的數(shù)組時(shí)才遇到了坑。

復(fù)制代碼 代碼如下:

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


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

復(fù)制代碼 代碼如下:

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)也有人遇到這樣的坑:

復(fù)制代碼 代碼如下:

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票的才是最完美的分析:

 

相關(guān)文章

  • BootStrap模態(tài)框和select2合用時(shí)input無法獲取焦點(diǎ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)代碼

    這篇文章主要介紹了JS彈窗 JS彈出DIV并使整個(gè)頁面背景變暗功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-04-04
  • IScroll5實(shí)現(xiàn)下拉刷新上拉加載的功能實(shí)例

    IScroll5實(shí)現(xiàn)下拉刷新上拉加載的功能實(shí)例

    本篇文章主要介紹了IScroll5實(shí)現(xiàn)下拉刷新上拉加載的功能實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • JavaScript“盡快失敗”的原則實(shí)例詳解

    JavaScript“盡快失敗”的原則實(shí)例詳解

    我第一次聽說編碼原則中有“盡快失敗”這一條時(shí),覺得很奇怪,為什么代碼要失???應(yīng)該成功才對呀。下面小編通過實(shí)例代碼給大家介紹js 盡快失敗的原則,一起看看吧
    2016-10-10
  • JavaScript正則表達(dá)式替換字符串中圖片地址(img src)的方法

    JavaScript正則表達(dá)式替換字符串中圖片地址(img src)的方法

    這篇文章主要介紹了JavaScript正則表達(dá)式替換字符串中圖片地址(img src)的方法,結(jié)合實(shí)例形式分析了JS正則替換的常用技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-01-01
  • 使用dynatrace-ajax跟蹤JavaScript的性能

    使用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中冷門卻實(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
  • 輕松5句話解決JavaScript的作用域

    輕松5句話解決JavaScript的作用域

    作用域(scope)是javascript語言的基石之一,在構(gòu)建復(fù)雜程序時(shí)可能是最頭痛的東西,所以這里羅列了五句話輕松搞定并且附上了示例。給需要的朋友參考學(xué)習(xí)。
    2016-07-07
  • 詳解為Bootstrap Modal添加拖拽的方法

    詳解為Bootstrap Modal添加拖拽的方法

    本篇文章主要介紹了詳解為Bootstrap Modal添加拖拽的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • 分享JavaScript與Java中MD5使用兩個(gè)例子

    分享JavaScript與Java中MD5使用兩個(gè)例子

    這篇文章主要為大家分享了JavaScript與Java中MD5使用兩個(gè)例子,
    2015-12-12

最新評論

永新县| 石首市| 株洲县| 秦安县| 成安县| 宜君县| 乐至县| 通榆县| 周至县| 诸暨市| 津南区| 武宣县| 铁岭县| 道孚县| 鱼台县| 东乌珠穆沁旗| 柳江县| 太康县| 宜兴市| 东兰县| 澳门| 全州县| 赣榆县| 苍山县| 盐边县| 阿鲁科尔沁旗| 桑日县| 青铜峡市| 平湖市| 来凤县| 武陟县| 隆回县| 大埔县| 罗山县| 绍兴市| 宁城县| 永清县| 民乐县| 洛阳市| 巨鹿县| 临漳县|