debugging Javascript为已定义的索引返回未定义的[重复]

0pizxfdo  于 2022-11-14  发布在  Java
关注(0)|答案(1)|浏览(159)
    • 此 问题 在 此处 已有 答案 * * :

Is Chrome’s JavaScript console lazy about evaluating objects? ( 7 个 答案 )
How do I return the response from an asynchronous call? ( 44 个 答案 )
2 天 前 关闭 。
我 在 Python 中 创建 了 随机 数 数组 , 并 通过 . txt 文件 在 Javascript 中 读取 它们 。 读取 文件 的 最终 结果 是 一 个 三维 数组 , 每当 我 记录 这个 数组 时 , 我 都会 得到 预期 的 结果 , 但 如果 我 试图 索引 它 , 则 会 返回 undefined 。

document.getElementById('inputfile').addEventListener('change',
            function (){
                var c_file_=[]
                var fr=[];
                var blocks=[];
                for(x=0;x<this.files.length;x++){
                    fr.push(new FileReader());
                    const f=x;
                    fr[f].readAsText(this.files[f])    
                    fr[f].onloadend=function(){
                        file=(fr[f].result)
                        if(file==null){
                            console.log('read_fail')
                            c_file_.push(file_[f-1])
                        }else{
                            blocks=file.split("\n")
                            string=[]
                            for(b=0;b<blocks.length;b++){
                                string.push(blocks[b].split("], ["))
                                string[b][0]=string[b][0].replaceAll('[[',"")
          string[b][string[b].length-1]=string[b][string[b].length-1].replaceAll(']]',"")
                            }
                            values=[]
                            for(i=0;i<string.length;i++){
                                values.push([])
                                for(n=0;n<string[i].length;n++){
                                    values[i].push(parseFloat(string[i][n]))
                                }  
                            }
                            c_file_.push(values);
                        }
                    } 
                }    
                    console.log(c_file_)
            })

中 的 每 一 个
如果 我 记录 整个 数组 , 则 会 记录 以下 内容 :
x1月 1 日
但是 如果 我 记录 c_file_[0] , 我 得到 的 是 未 定义 的 。
我 尝试 过 使用 spread 来 Map 数组 , 在 赋值 之前 Map 数组 , 以及 各种 克隆 方法 来 避免 内存 泄漏 。 但是 没有 任何 方法 允许 我 访问 最终 数组 的 值 。 我 是 javascript 新手 , 所以 我 可能 错过 了 一些 明显 的 东西 , 但是 我 无法 理解 它 对 似乎 已 定义 的 东西 返回 undefined 。

2cmtqfgy

2cmtqfgy1#

浏览器中对象的Console.log通常显示对象在开发者控制台中展开时的内容,* 而不是在JavaScript中登录时的属性和值 *。换句话说,console.log(object)不会复制object的快照。但是,如果您在读取所有文件后才展开控制台输出,您将看到从文件生成的值。
另一方面,console.log(undefined)会立即在控制台上记录“undefined”。
在发布的代码中,c_file_在读取完文件后,在loadend事件处理程序中异步推送了一些项。但是,发布中的console.log行在读取任何文件之前被同步调用。因此,如果在同一位置记录c_file_[0]的值,预期会看到undefined,因为c_file_数组仍为空。

相关问题