首页 > 其他分享 >记录一个i变量引发的事故

记录一个i变量引发的事故

时间:2022-08-17 15:44:27浏览次数:61  
标签:info detailModulOfPromote 变量 事故 记录 detailModulOfFree let child property

概述

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

现象

我的程序突然引发了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])

上面是部分代码,大家能发现问题吗?
我公布一下答案

image

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

总结

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

标签:info,detailModulOfPromote,变量,事故,记录,detailModulOfFree,let,child,property
From: https://www.cnblogs.com/zhupengfei/p/16595460.html

相关文章

  • 记录:excel导入导出js-xlsx,处理合并
    效果前情提要后端传excel坐标数据,前端自己处理模板,找资料后,选择直接载入xlsx方式。准备工作npmixlsximport*asXLSXfrom'xlsx'导入提取数据letreader......
  • oracle相关记录
    基于11g安装,仅需注意在口令管理界面,修改sys和system的口令并放开scott账号并设置口令如果使用sqldevelop,需要指定oracle安装目录下的jdk路径plsql的使用:只有32位版......
  • http 请求 Cros 跨域问题记录(转)
    前言当发起请求前端所在的域名跟后端所在域名不在同一个Origin,或者前端请求了不在当前域名下的各种资源,都会有跨域问题。跨域问题主要是在资源提供方配置跨域,即后端服......
  • Git之清除历史记录操作
    近期公司需要将之前代码仓库中的提交记录都清理,所以操作一下,记录一下步骤:安全考虑:有时候在提交代码时,不小心提交了敏感数据,如账号密码什么的,这样在历史记录中就可以......
  • ABAP开发奇葩BUG记录: SUBMIT AND RETURN 不生效
    项目需要创建大量数据并预处理来进行测试,Team里用的是三哥的一个report去创建单个数据。三哥的程序很简单,就是个选择屏幕,输入一些值,然后做主数据,然后alv显示出来。于是我......
  • [BJDCTF2020]Mark loves cat-1|源代码泄露|变量覆盖
    主要考察了:源代码泄露、变量覆盖共展示了三种获取flag的方式1、打开题目查看未发现有效信息,查看源代码信息,发现返回的dog信息,结果如下:2、使用dirmap进行目录扫描,发现......
  • 上网记录20220816
    一个dotnet数据库orm框架 https://github.com/leadnt/FluentDAO一个基于HttpClient的开源项目。只需要定义c#接口并修改相关特性,即可异步调用远程http接口的客户......
  • DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设
    很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来。这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧。De......
  • 如何进行Oracle安装TNS_ADMIN环境变量设置,所有数据库的tns_admin值都可以设置为单个位
    https://www.yisu.com/zixun/616854.html如何进行Oracle安装TNS_ADMIN环境变量设置如何进行Oracle安装TNS_ADMIN环境变量设置,很多新手对此不是很清楚,为了帮助大家解决这......
  • mysql问题记录:varchar字段存数字加了索引,导致between速度非常慢,走了全表扫描
    在字段类型为varchar并且是数字的时候,此时使用betweennum1andnum2。会导致不走索引。原因是因为当条件是数字的时候,mysql会将varchar字段先转换为数值,然后进行比较。......