概述

近期开发中遇到一个特别的问题,觉得很有必要与你下来。就是由于在开发中一个很小的疏忽,导致了很大的问题,是什么呢?

现象

我的程序突然引发了v8内部的错误,提示都是c++的,如下。程序一启动就直接崩溃。没有任何错误提示。

#
# Fatal error in , line 0
# Fatal JavaScript invalid size error 195652814
#
#
#
#FailureMessage Object: 0x7ffd9ac17dd0
1: 0xb76401 [node]
2: 0x1c09824 V8_Fatal(char const*, ...) [node]
3: 0xe7dd5e [node]
4: 0xff5168 [node]
5: 0x1007649 [node]
6: 0x11ed9f3 v8::internal::Runtime_GrowArrayElements(int, unsigned long*, v8::internal::Isolate*) [node]
7: 0x15f20b9 [node]
Trace/breakpoint trap

如果放在平时,估计直接崩溃了,重装系统都有可能。比较幸运的是,在出现此错误和正常运行时,我只改了少量的代码。我觉得问题可能是出现这些代码上,就仔细比对了这些代码。结果还真发现了问题。

      for (let i = 0; i < res.data.items.length; i++) {
const info = objectHelper.cloneDeepJsonParse(res.data.items[i]) if (info.property.detailModulOfFree == undefined) info.property.detailModulOfFree = []
for (let j = 0; j < info.property.detailModulOfFree.length; j++)
info.property.detailModulOfFree[j] = parseInt(info.property.detailModulOfFree[j]) if (info.property.detailModulOfPromote == undefined) info.property.detailModulOfPromote = []
for (let j = 0; j < info.property.detailModulOfPromote.length; j++)
info.property.detailModulOfPromote[j] = parseInt(info.property.detailModulOfPromote[j]) const topic: any = {
id: info.id,
} for (let j = 0; j < info.children.length; j++) {
const child = info.children[j]
child.property.topicType = child.property.topicType == undefined ? 1 : child.property.topicType if (child.property.detailModulOfFree == undefined) child.property.detailModulOfFree = []
for (let k = 0; k < child.property.detailModulOfFree.length; k++)
child.property.detailModulOfFree[k] = parseInt(child.property.detailModulOfFree[k]) if (child.property.detailModulOfPromote == undefined) child.property.detailModulOfPromote = []
for (let k = 0; k < child.property.detailModulOfPromote.length; k++)
child.property.detailModulOfPromote[k] = parseInt(child.property.detailModulOfPromote[k]) if (child.property.detailModulOfVip1 == undefined) child.property.detailModulOfVip1 = []
for (let k = 0; i < child.property.detailModulOfVip1.length; k++)
child.property.detailModulOfVip1[k] = parseInt(child.property.detailModulOfVip1[k]) if (child.property.detailModulOfVip2 == undefined) child.property.detailModulOfVip2 = []
for (let k = 0; k < child.property.detailModulOfVip2.length; k++)
child.property.detailModulOfVip2[k] = parseInt(child.property.detailModulOfVip2[k])

上面是部分代码,大家能发现问题吗?

我公布一下答案

这里谅是K的,错误的写成了i,这个i是外层的一个for循环变量。

总结

  1. 写代码一定要认真,相信没有最好,只有更好。
  2. 尽量不要使用for,建议使用foreach。减少i,j,k这样的变量使用。降低错误的风险。

最新文章

  1. 【干货分享】流程DEMO-离职流程
  2. 在Windows中安装Memcached
  3. IrfanView 4.36 中文版发布了
  4. 语音直播是否真能让国内网红向“Creator”转变?
  5. windows下ftp上传下载和一些常用命令
  6. NOI2010 航空管制
  7. python爬虫scrapy框架——人工识别知乎登录知乎倒立文字验证码和数字英文验证码
  8. 利用原生js制做数据管理平台,适合初学者学习
  9. [转]另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
  10. 在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制
  11. 6.oop-类和对象
  12. 消息摘要、哈希(hash)、加盐
  13. Beta冲刺! Day2 - 砍柴
  14. Excel--数据透视图
  15. winform版的dota改键器
  16. VS Code对.NET Core项目持续的Build
  17. 重识linux-linux系统服务相关
  18. 网站文章分享到微博,微信、qq空间--举例用织梦
  19. Intent----android中的伟大邮差
  20. CF567F/51nod2522 上下序列

热门文章

  1. git bisect:让你闭眼都能定位疑难 bug的利器
  2. 官方出品,比 mydumper 更快的逻辑备份工具
  3. ES6 - promise(3)
  4. 《HALCON数字图像处理》第五章笔记
  5. c++ 平衡树
  6. AcWing-1022
  7. ExtJS 布局-Anchor 布局(Anchor layout)
  8. 工具箱之 IKVM.NET 项目新进展
  9. adb工具
  10. 栈(Stack)和队列