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

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


当前回答

正如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> 

其他回答

如果你存储你的colorcodes在一个全局变量,你应该能够访问它从任何javascript文件。

这应该可以工作-在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,也可能是其他浏览器)很重要。

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

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

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

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

出口- MDN

我确实喜欢上面说的答案,但它一开始并没有为我工作,因为我在jQuery $(document).ready()中声明这些变量。

因此,请确保在<script>标记中声明变量,而不是在其他地方。

我的做法可能有点不同。我不知道为什么要用这个语法,从很久以前的书上抄下来的。但是我的每个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中,sepfunction我称之为r。somefunction。 我意识到这没有提供任何运行时效率,因为两个脚本都需要加载,但它确实帮助我保持我的代码有组织。