我可以从其他文件中访问变量吗?

SAK*_*SAK 148 javascript scope

是否可以在first.js名为second.js?的另一个文件中调用的文件中使用变量?

first.js包含一个名为的变量colorcodes.

Dag*_*bit 166

正如Fermin所说,全局范围中的变量应该可以被声明后加载的所有脚本访问.您还可以使用window或属性(在全局范围内)this来获得相同的效果.

// first.js
var colorCodes = {

  back  : "#fff",
  front : "#888",
  side  : "#369"

};
Run Code Online (Sandbox Code Playgroud)

...在另一个文件中......

// second.js
alert (colorCodes.back); // alerts `#fff`
Run Code Online (Sandbox Code Playgroud)

...在你的html文件中......

<script type="text/javascript" src="first.js"></script> 
<script type="text/javascript" src="second.js"></script> 
Run Code Online (Sandbox Code Playgroud)

  • 在浏览器中,`window`*是*全局范围 - 所以window.colorCodes和(全局)对象colorCodes是同一个对象. (5认同)
  • 怎么样的HTML?在html中我有:`<script> var variable1 = true; </ script> <script src ="first.js"> </ script>`first.js会看到那个变量吗?我在Google Chrome扩展程序中对其进行了测试,但它无效 (2认同)
  • 如果您使用的是 eslint,您可以在上面的行中添加 `/* global colorCodes */` 以防止“...未定义”错误消息 (2认同)
  • 这是一个过时的答案。请接受我下面的答案,它使用 ES6 导出/导入语法,这现在主要是标准的。 (2认同)

Ger*_*oke 23

您可以使用export从第一个文件导出变量.

//first.js
const colorCode = {
    black: "#000",
    white: "#fff"
};
export { colorCode };
Run Code Online (Sandbox Code Playgroud)

然后,使用import在第二个文件中导入变量.

//second.js
import { colorCode } from './first.js'
Run Code Online (Sandbox Code Playgroud)

出口 - MDN

  • `const` 是变量的一种类型。`var` 也是变量的一种类型。它们是两种不同类型的变量,具有不同的特征。答案并不具有误导性,您只是在您的用例中使用了错误类型的变量。这不能用 const 来完成 - 它们在初始化后是不可变的。您可以在此处了解不同的变量声明:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements#declarations (3认同)

Xin*_*ton 15

使用 Node.js,您可以通过模块导出变量。

//first.js
const colorCode = {
    black: "#000",
    white: "#fff"
};
module.exports = { colorCode };
Run Code Online (Sandbox Code Playgroud)

然后,使用 require 在第二个文件中导入模块/变量。

//second.js
const { colorCode } = require('./first.js')
Run Code Online (Sandbox Code Playgroud)

您可以使用Webpack/Babel 使用 ES6 中的importexport方法,但在 Node.js 中您需要启用一个标志,并使用 .mjs 扩展名。


Pis*_*3.0 13

这应该工作 - 在firstfile中定义一个全局变量并从secondfile访问它:

<script src="/firstfile.js"></script>
<script src="/secondfile.js"></script>
Run Code Online (Sandbox Code Playgroud)

firstfile.js:

var colors = {
   text:'#000000',
   background:'#aaaaaa',
   something_else:'blue'
};
Run Code Online (Sandbox Code Playgroud)

secondfile.js:

do_something_with(colors.background);
Run Code Online (Sandbox Code Playgroud)

请注意,加载脚本文件的顺序对于某些浏览器来说很重要(肯定是IE6,也许是其他浏览器)


Bas*_*ANI 11

我确实喜欢上面所说的答案,但是,它并没有对我有用

因为我是JQuery的declaring这些变量inside$( document ).ready()

所以请确保在<script>标签内声明变量而不是其他地方