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.
迷茫
迷茫 2017-05-19 10:19:52
0
2
397


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

}
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

Antworte allen(2)
仅有的幸福

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

  1. 空对象声明

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

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

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

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

value below was evaluated just now

伊谢尔伦

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


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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage