gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:41:46 24 4
gpt4 key购买 nike

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

示例:

DoStuff.js:

function genList(){
var listData = [

//lots of inner arrays and data

]

var dataItem = "value";//50 of these

//do stuff with the data
}

我正在尝试做的事情:

ExternalData.js:

var listData = [

//lots of inner arrays and data

]

var dataItem = "value";//50 of these

DoStuff.js:

function genList(){

//call variables/arrays from ExternalData.js

//do stuff
}

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

最佳答案

我会在一个对象中定义所有变量,例如:

var obj = {
array_one: ['x', 'y'],
some_value: 'z'
}

此方法的优点是为所有变量创建了一种命名空间,避免了重写值。

然后使用某种包含方法将该对象用于我的代码。

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

<script type="text/javascript" scr="file_with_object.js"></script>

其他更复杂但仅在您要重复这种行为时才可取就是用一个Library或者framework来让include更简洁,require.js是一个很好的例子

编辑:在前面的例子中,考虑到代码是在全局范围内编写的,我使用了带有 var 的对象,我认为最好使用 window.obj = {} 来确保变量是全局的。而且,仅作记录,您定义的任何变量(如此 window.somevariable)都将成为全局变量。一旦你定义了一个全局变量,你就可以在你的代码中的任何地方使用它(在定义发生之后)。命名空间是正确的方法。

编辑 2:我认为这篇文章更多的是关于范围而不是包含。当你这样声明一个变量时:var some_variable; 你是说你想将该变量绑定(bind)到当前范围。因此,如果您在函数内部执行此操作,则该变量“存在”于该函数内部:

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

console.log(some_var) // 10

但是,如果您在这两种情况下都声明了没有 var 的变量,那么您是在第一次使该变量成为全局变量并在第二次覆盖它的值:

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

并且总是声明一个不带 var 的变量,该变量可以通过 window.variablename 访问,因为您没有将变量绑定(bind)到任何特定范围,所以绑定(bind)是对窗口对象进行的,这是全局范围“命名空间”。

关于javascript - 将javascript变量从一个函数/文件传递到另一个函数/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20415654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com