将局部作用域变量移至全局作用域,以便我可以将其导入到另一个 JS 文件中

问题描述 投票:0回答:1

我正在尝试将 Excel 工作表转换为 JavaScript 中的 json 对象,但在检索最终数据时遇到问题,因为它的范围仅限于本地。我想将标记为“inputData”的变量导出到另一个 JS 文件,但是为了做到这一点,它必须位于文件的顶层,我认为这意味着它必须是全局范围的。不过,我一生都无法弄清楚如何从其本地范围中获取它。任何帮助将不胜感激。

看一下代码:

let selectedFile;

document.getElementById('input').addEventListener('change', (event) => {
    selectedFile = event.target.files[0];
})
document.getElementById('button').addEventListener('click', () => {

    if (selectedFile) {
        let fileReader = new FileReader();
        fileReader.readAsBinaryString(selectedFile);
        fileReader.onload = (event) => {
            let data = event.target.result;
            let workbook = XLSX.read(data, { type: "binary" })
            let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets.Grid);
            let newData = rowObject.filter((item, index) => {
                return index === rowObject.findIndex((obj) => {
                    return JSON.stringify(item) === JSON.stringify(obj)
                })
            })

            newData.pop()

            let inputData = JSON.stringify(newData, undefined, 4)
            console.log(inputData)
        }
    }
})
javascript variables scope global-variables local-variables
1个回答
0
投票

您可以导出可变对象作为引用:

export const selectedFile = { value: undefined };

document.getElementById('input').addEventListener('change', (event) => {
    selectedFile.value = event.target.files[0];
})
document.getElementById('button').addEventListener('click', () => {

    if (selectedFile.value) {
        let fileReader = new FileReader();
        fileReader.readAsBinaryString(selectedFile.value);
        fileReader.onload = (event) => {
            let data = event.target.result;
            let workbook = XLSX.read(data, { type: "binary" })
            let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets.Grid);
            let newData = rowObject.filter((item, index) => {
                return index === rowObject.findIndex((obj) => {
                    return JSON.stringify(item) === JSON.stringify(obj)
                })
            })

            newData.pop()

            inputData = JSON.stringify(newData, undefined, 4)
            console.log(inputData)
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.