javascript - 在函数外声明对象,然后在函数内赋值,结果在函数外无法获取到所赋的值

查看:197
本文介绍了javascript - 在函数外声明对象,然后在函数内赋值,结果在函数外无法获取到所赋的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题


就像图中所示,展开时可以看到值,但是值其实不在对象中

if (typeof require !== 'undefined') var XLSX = require('xlsx');

function to_json(workbook) {
    var result = {};
    workbook.SheetNames.forEach(function(sheetName) {
        var roa = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
        if (roa.length > 0) {
            result[sheetName] = roa;
        }
    });
    return result;
}
export function handleFile(e) {
    var files = e.target.files;
    var i, f;
    var testTest = {};
    for (i = 0; i != files.length; ++i) {
        f = files[i];
        var reader = new FileReader();
        var name = f.name;
        reader.onload = function(e) {
            var data = e.target.result;
            var workbook;
            /* if binary string, read with type 'binary' */
            workbook = XLSX.read(data, {
                type: 'binary'
            });
            let excelData = to_json(workbook);
            testTest.data = excelData;
        };
        reader.readAsBinaryString(f);
    }
    console.log(testTest)
    return testTest

}

解决方案

chrome的console打印对象的时候,查看值是点击展开时再详细获取的,整个流程:

  1. 空对象声明

  2. 执行console,chrome打印对象,传递的是对象的引用

  3. FileReader完成,赋值data给对象

  4. 你在console中,点击展开值,通过对象引用,获取到对象的详细值

你可以看到截图Object {} [i]这里有个[i]的图标,有对应的对象console说明:

value below was evaluated just now

这篇关于javascript - 在函数外声明对象,然后在函数内赋值,结果在函数外无法获取到所赋的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆