suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Deklarieren Sie ein Objekt außerhalb einer Funktion und weisen Sie dann einen Wert innerhalb der Funktion zu. Daher kann der zugewiesene Wert nicht außerhalb der Funktion abgerufen werden.


Wie im Bild gezeigt, können Sie den Wert im erweiterten Zustand sehen, aber der Wert ist nicht tatsächlich im Objekt enthalten

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

}
迷茫迷茫2791 Tage vor410

Antworte allen(2)Ich werde antworten

  • 仅有的幸福

    仅有的幸福2017-05-19 10:21:52

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

    1. 空对象声明

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

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

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

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

    value below was evaluated just now

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:21:52

    问题在于,你的reader.onload是在啥时候运行的。


    另外,我还是搞不明白,为什么不直接复制粘贴代码???为什么要截图?

    Antwort
    0
  • StornierenAntwort