新足迹

 找回密码
 注册

精华好帖回顾

· 一个sale的仓库(MEL) (2005-6-30) leeshine · 九千公里云和月,二十一天光与影:墨尔本到Cooktown纵向穿越澳洲大陆之旅 (2012-1-15) 河水洋洋
· 达令港 (2009-9-27) 老陶 · 选举通知书 (2014-11-28) daniello
Advertisement
Advertisement
查看: 4017|回复: 7

[IT] 做JavaScript题遇到两个问题,请问各位JavaScript大拿解答一下 [复制链接]

发表于 2018-6-11 11:56 |显示全部楼层
此文章由 Keith 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Keith 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 Keith 于 2018-6-11 12:00 编辑

谢谢!

问题1,具体哪里内存泄漏了?


问题2,http 大数据量的问题:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
Advertisement
Advertisement

发表于 2018-6-11 15:54 |显示全部楼层
此文章由 gzrain 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 gzrain 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小试一下,莫喷~

Q1:

  1. longStr: new Array(100000).join('*');
复制代码
其他行都是定义,只有这行在runtime被执行


Q2:
如果api不可以改的话

  1. let renderPhoneBook = (list) => {
  2.   let phoneBook = $('ul#phone-book');
  3.   for (let item of list) {
  4.     phoneBook.append(`<li>${item.name} , ${item.number}</li>`)
  5.   }
  6. }
复制代码
* save jquery selector to variable 减少 DOM 操作
* loop 里面的 item 不需要是 const

评分

参与人数 1积分 +2 收起 理由
Keith + 2 感谢分享

查看全部评分

发表于 2018-6-11 16:16 |显示全部楼层
此文章由 angest 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 angest 所有!转贴必须注明作者、出处和本声明,并保持内容完整
第一个unused和someMethod两个函数共享作用域,而unused函数用了theValue,所以someMethod函数也不得不保留theValue的引用,于是每个新值都引用到旧值了。按题意的解决方法是把originalValue用完之后设置为null即可。
第二个不知道用的是哪个库,我没试运行,反正这样狂操DOM肯定是不行的。先把所有要插的DOM组成一个字符串,再插进去。

评分

参与人数 1积分 +4 收起 理由
Keith + 4 太给力了

查看全部评分

发表于 2018-6-11 16:40 |显示全部楼层
此文章由 maudlin 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 maudlin 所有!转贴必须注明作者、出处和本声明,并保持内容完整
第二个把要增加的节点拼接成字符串再插入,这样性能提升很多。

评分

参与人数 1积分 +2 收起 理由
Keith + 2 感谢分享

查看全部评分

发表于 2018-6-11 18:12 来自手机 |显示全部楼层
此文章由 xiaomao8754 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xiaomao8754 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Best solution for the second one is to modify the API to support pagination

评分

参与人数 1积分 +2 收起 理由
Keith + 2 感谢分享

查看全部评分

发表于 2018-6-12 12:27 |显示全部楼层
此文章由 topliu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 topliu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
my 2 cents:
第一个每一秒都占用1000000个undefined elements, 当然时间长了出问题了,用完清空就行。
第二个,拿到一次object就可以,不用每次都找一次tag. 10000个数据一次append时间也不少,既然题目要求short-term solution, 那最简单的就是settimeout来分段操作来提高响应速度,比如先list100个

评分

参与人数 1积分 +2 收起 理由
Keith + 2 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2018-6-12 22:31 |显示全部楼层
此文章由 fish0185i 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fish0185i 所有!转贴必须注明作者、出处和本声明,并保持内容完整
问题二
https://developers.google.com/web/fundamentals/performance/rendering/
这个可能有点帮助,因为不断插入造成不断计算layout和paint,所以把他们串起来会节约很多资源

评分

参与人数 2积分 +8 收起 理由
Keith + 4 感谢分享
woshidajiangyou + 4 感谢分享

查看全部评分

发表于 2018-6-12 22:55 |显示全部楼层
此文章由 fish0185i 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fish0185i 所有!转贴必须注明作者、出处和本声明,并保持内容完整
第一道题目有人做了比较详细的解释http://heichwald.github.io/2016/01/10/memory-leak-closure-javascript.html
js closure memory leak

评分

参与人数 1积分 +4 收起 理由
woshidajiangyou + 4 感谢分享

查看全部评分

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部