我可以从另一个文件访问变量吗?

2020/10/20 16:41 · javascript ·  · 0评论

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

first.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> 

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

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

然后,使用导入的变量在第二个文件导入

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

出口-MDN

我确实喜欢上面所说的答案,但尽管如此,它对我没有用

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

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

这应该可以工作-在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,也许是其他浏览器),加载脚本文件的顺序很重要。

使用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中,您需要启用一个标志,并使用.mjs扩展名。

我遇到了amplify.js使用起来真的很简单。要存储一个值,我们将其称为“ myValue”,您可以执行以下操作:

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

并访问它,您可以

amplify.store("myKey")

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

我做这件事可能有所不同。我不确定为什么要使用这种语法,因为它是很久以前从一本书中复制的。但是我的每个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“分隔功能”中我将其称为R.somefunction。我意识到这并不能提高运行时效率,因为两个脚本都需要加载,但这确实有助于我保持代码井井有条。

最好的方法是使用窗口。INITIAL_STATE

<script src="/firstfile.js">
    // first.js
    window.__INITIAL_STATE__ = {
      back  : "#fff",
      front : "#888",
      side  : "#369"
    };
</script>
<script src="/secondfile.js">
    //second.js
    console.log(window.__INITIAL_STATE__)
    alert (window.__INITIAL_STATE__);
</script>
本文地址:http://javascript.askforanswer.com/wokeyiconglingyigewenjianfangwenbianliangma.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!