Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript变量从一个函数/文件传递到另一个函数/文件_Javascript_Arrays_Function_Variables_Pass Data - Fatal编程技术网

将javascript变量从一个函数/文件传递到另一个函数/文件

将javascript变量从一个函数/文件传递到另一个函数/文件,javascript,arrays,function,variables,pass-data,Javascript,Arrays,Function,Variables,Pass Data,我有一个函数,有很多变量和非常大的数组被定义;这使得函数非常大,很难使用。如何在另一个文件中定义变量/数组并在此函数中使用它们 示例: DoStuff.js: 我想做什么: ExternalData.js: DoStuff.js: 注意: JQuery在这里是适用的,但我不想为这么小的东西调用任何其他库 我将定义对象中的所有变量,例如: var obj = { array_one: ['x', 'y'], some_value: 'z' } 此方法的优点是为所有变量创建一种名称空间

我有一个函数,有很多变量和非常大的数组被定义;这使得函数非常大,很难使用。如何在另一个文件中定义变量/数组并在此函数中使用它们

示例:

DoStuff.js:

我想做什么:

ExternalData.js:

DoStuff.js:

注意:
JQuery在这里是适用的,但我不想为这么小的东西调用任何其他库

我将定义对象中的所有变量,例如:

var obj = {
   array_one: ['x', 'y'],
   some_value: 'z'
}
此方法的优点是为所有变量创建一种名称空间,从而避免重写值

然后使用某种include方法在代码中使用该对象

一种简单的方法是在编写脚本之前添加脚本,如下所示:

<script type="text/javascript" scr="file_with_object.js"></script>
但是,如果在两种情况下都声明了不带var的变量,则第一次将该变量设置为全局变量,第二次将覆盖其值:

    some_var = 10;
    function(){
       some_var = 5;
       console.log(some_var) // 5
    }
    console.log(some_var) // 5

通常,如果您声明一个不带var的varaible,则可以通过window.variablename访问该变量,因为您没有将该变量绑定到任何特定的作用域,因此绑定到window对象,即全局作用域“名称空间”。

许多选项:,还有,有没有一种简单的本地javascript方法可以做到这一点?我不喜欢调用库只是为了在页面之间或函数之间传递一些数据。您可以直接访问ExternalData.js中的变量,只需包含脚本并将其作为对象调用,那么您的确切问题是什么。创建一个唯一的全局对象(命名空间)
window.MY={}
并在那里共享代码,这就是没有库时的做法。您可以通过创建
window.jtodd={}
声明一个“名称空间”,然后将数据构建到该名称空间上。这回答了我的问题。我确实有一个问题:我可以这样做吗?在函数中使用变量的任何地方,我都不必更改调用它们的名称?这不是一个很大的问题;我只是想知道是否有办法跳过这个问题。这是一个很好的答案。我所做的编辑回答了另一个问题吗?嗯,我以前没有使用全局变量,但我想我需要通过window.variableName而不仅仅是variableName访问它们?不,不是这样。您可以在没有窗口的情况下访问这些变量。事实上,如果不使用var前缀,变量将被声明为全局变量,并且可以使用window.varaiblename或variablename进行访问。这是因为window是在浏览器上下文中保存全局范围的对象。使用window.varaiblename只是为了可读性,更简洁。因为如果在声明变量时不使用var,可能会认为变量已经定义。
var obj = {
   array_one: ['x', 'y'],
   some_value: 'z'
}
<script type="text/javascript" scr="file_with_object.js"></script>
var some_var = 10;
function(){
   var some_var = 5;
   console.log(some_var) // 5
}

console.log(some_var) // 10
    some_var = 10;
    function(){
       some_var = 5;
       console.log(some_var) // 5
    }
    console.log(some_var) // 5