0

你好!

我是 JavaScript 新手。请原谅我缺乏 JS 词汇。

语境

我有三个文件:

  • 索引.html
  • main.js
  • 网站.js

索引.html

<body>
  <h1>JavaScript Testing Zone</h1>
  <script src="/main.js" type="module"></script>
</body>

main.js

import { sitesMod } from "/sites.js";
sitesMod();

console.log(sites);

网站.js

function sitesMod() {
  var sites = [
    'https://site1.org/',
    'https://site2.org/',
    'site3.org/'
  ];
}
export { sitesMod };

代码说明

index.html将运行main.js文件。

main.js将从sites.js导入并运行函数sitesMod ()

问题

console.log(sites);应该输出https://site1.org/,https://site2.org/,https://site3.org/

相反,console.log(sites);输出sites is not defined

我知道的

我意识到我需要在 main.js 中声明类似var sites = X的内容,但我不确定如何将onsites.js的内容转移var siteson main.jsvar sites

到目前为止,使用导入和导出模块似乎让我朝着正确的方向前进。我需要连接将变量数据从一个文件传输到另一个文件的最后一步。

我希望我能够以一种可理解的方式描述我的问题。如果我能澄清这个问题,请告诉我。谢谢你。

4

3 回答 3

0

兄弟,我注意到您的代码中有两个错误:

  1. 当您在您的文件中导入和链接您的文件时,.js.html将指向系统根文件夹(例如type="/main.js",、import { sitesMod } from "/sites.js"; )。指向实际文件夹./main.js,例如,您的文件夹在哪里使用,而不仅仅是/,或者只是删除它,是相同的;
  2. 当您在函数内声明变量时,它具有局部范围,并且在执行的最后被删除,因此您无法在范围之外访问它,因此:
import { sitesMod } from "/sites.js";
sitesMod();

console.log(sites);

错了。相反,有两种方法:

  1. 在您的site.js
function sitesMod() {
  var sites = [
    'https://site1.org/',
    'https://site2.org/',
    'site3.org/'
  ];

  return sites;
}

main.js

import { sitesMod } from "./sites.js";

console.log(sitesMod());
  1. console.log()直接在函数中包含 a ——第一个更好;):
function sitesMod() {
  var sites = [
    'https://site1.org/',
    'https://site2.org/',
    'site3.org/'
  ];

  console.log(sites);
}

export { sitesMod };

提示:查看更多关于范围和区别的信息varlet以及const更多关于 Linux 的信息(你会理解/./)等等。

希望对你有帮助,好好学习XD

我的英语很烂,所以请原谅我的一些事情......

于 2022-03-05T08:02:52.277 回答
0

这里有两个问题。sitesMod是没有返回值的函数,所以当你在 main.js 中调用它时,什么也没有发生。将函数更改为:

function sitesMod() {
  var sites = [
    'https://site1.org/',
    'https://site2.org/',
    'site3.org/'
  ];
  return sites;
}

第二个问题是您使用该功能的方式。仅调用函数不会在sites函数体之外声明变量 ( )。要访问sites变量,您可以这样做:

import { sitesMod } from "/sites.js";

console.log(sitesMod());

我没有尝试代码。

于 2022-03-05T07:26:47.210 回答
0

function sitesMod()什么都没有return,运行它不会创建一个名为的全局变量sites

一种解决方案是

网站.js

function sitesMod() {
  var sites = [
    'https://site1.org/',
    'https://site2.org/',
    'site3.org/'
  ];
  return sites;
}

main.js

import { sitesMod } from "/sites.js";
const sites = sitesMod();

console.log(sites);

但是,由于sites.js 的琐碎性质-我更倾向于简化代码,例如

网站.js

const sites = [
  'https://site1.org/',
  'https://site2.org/',
  'site3.org/'
];

export { sites };

main.js

import { sites } from "/sites.js";
console.log(sites);
于 2022-03-05T07:31:28.653 回答