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

时间:2010-07-14 08:10:39

标签: javascript scope

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

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

10 个答案:

答案 0 :(得分:153)

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

// first.js
var colorCodes = {

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

};

...在另一个档案......

// second.js
alert (colorCodes.back); // alerts `#fff`

...在您的html文件中......

<script type="text/javascript" src="first.js"></script> 
<script type="text/javascript" src="second.js"></script> 

答案 1 :(得分:15)

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

//first.js
const colorCode = {
    black: "#000",
    white: "#fff"
};
export { colorCode };

然后,使用 import 将变量导入第二个文件。

//second.js
import { colorCode } from './first.js'

export - MDN

答案 2 :(得分:13)

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

<script src="/firstfile.js"></script>
<script src="/secondfile.js"></script>

firstfile.js:

var colors = {
   text:'#000000',
   background:'#aaaaaa',
   something_else:'blue'
};

secondfile.js:

do_something_with(colors.background);

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

答案 3 :(得分:10)

我确实喜欢answer above所说的,但是,它并没有和我合作

因为我.data num db 22 multiplier db 20 divide db 10 digit1 db ? digit2 db ? digit3 db ? digit4 db ? .code MOV AL,num MUL multiplier ;----22 x 20 = 440 MOV BH,AH ;----AH stores 04?? AL stores 40? ;----40 DIV divide MOV digit1,AH MOV digit2,AL ;----04 MOV AL,BH DIV divide MOV digit3,AH MOV digit4,AL ;---display MOV AH,02H MOV DL,digit1 INT 21H ;---same for digit2,3,4 这些变量是declaring JQuery inside

  

因此请确保在$( document ).ready()标记内声明变量而不是其他地方

答案 4 :(得分:4)

我遇到了amplify.js。它使用起来非常简单。要存储一个值,我们称之为“myValue”,你可以:

amplify.store("myKey", "myValue")

要访问它,你可以

amplify.store("myKey")

答案 5 :(得分:2)

如果您将颜色代码存储在全局变量中,您应该可以从另一个javascript文件访问它。

答案 6 :(得分:2)

我可能会这样做有点不同。我不知道为什么我使用这种语法,很久以前从一本书中复制了它。但是我的每个js文件都定义了一个变量。第一个文件完全没有任何理由,称为R:

    var R = 
    { 
        somevar: 0,
        othervar: -1,

        init: function() {
          ...
        } // end init function

        somefunction: function(somearg) {
          ...
        }  // end somefunction

        ...

    }; // end variable R definition


    $( window ).load(function() {
       R.init();
    })

然后,如果我有一大段代码需要隔离,我将它放在一个单独的文件和一个不同的变量名中,但我仍然可以引用R变量和函数。我完全没有理由打电话给新的TD:

    var TD = 
    { 
        xvar: 0,
        yvar: -1,

        init: function() {
           ...
        } // end init function

        sepfunction: function() {
           ...
           R.somefunction(xvar);
           ...
        }  // end somefunction

        ...

    }; // end variable TD definition


    $( window ).load(function() {
       TD.init();
    })

你可以看到TD&#39; sepfunction&#39;我称之为R.somefunction。 我意识到这并没有提供任何运行时效率,因为两个脚本都需要加载,但它确实帮助我保持我的代码组织。

答案 7 :(得分:2)

这是一个很老的问题,但我将提供一个自 ES6 以来可用的现代解决方案 - exportimport

first.js中:

let colorcodes = <whatever>;
export default colorcodes //or a different export statement

second.js中:

import colorcodes from <path-to-first.js> //or a matching import statement

答案 8 :(得分:0)

  

一种最佳方法是使用窗口。 INITIAL_STATE

>>> print(repr("A'B"))
"A'B"
>>> print(repr('A"B'))
'A"B'

答案 9 :(得分:0)

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

//first.js
const colorCode = {
    black: "#000",
    white: "#fff"
};
module.exports { colorCode };

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

//second.js
const { colorCode } = require('./first.js')

您可以通过Webpack / Babel使用ES6中的importexport方法,但是在Node.js中,您需要enable a flag, and uses the .mjs extension.