Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables_Global_Local - Fatal编程技术网

Javascript 将局部变量从函数中传递出去,使之成为全局变量

Javascript 将局部变量从函数中传递出去,使之成为全局变量,javascript,variables,global,local,Javascript,Variables,Global,Local,我花了两个小时想弄明白怎么做,但什么都没用。下面是我的一些代码的简短示例。我想从函数中获取arrtime和其他几个类似的变量,以便全局使用它们。有什么想法吗?请不要太复杂,我不是专家(显然) 执行此操作的干净方法是使用js对象表示法: function showTest(str) { //other code return {arr: arrayvals, tm: arrtime}; } var func_result = showTest("blah-blah"); var

我花了两个小时想弄明白怎么做,但什么都没用。下面是我的一些代码的简短示例。我想从函数中获取arrtime和其他几个类似的变量,以便全局使用它们。有什么想法吗?请不要太复杂,我不是专家(显然)


执行此操作的干净方法是使用js对象表示法:

function showTest(str) {
    //other code
    return {arr: arrayvals, tm: arrtime};
}

var func_result = showTest("blah-blah");
var testvar =func_result.tm;
var testvar2=func_result.arr;
但一般来说,拥有全球VAR是个坏主意。你为什么需要它

使用
global
对象更新
示例代码

globals = {};
function q(){
    globals['a'] = 123;
    globals[123] = 'qweqwe';
}
function w(){
    alert(globals.a);
    //alert(globals.123); //will not work
    alert(globals[123]); //that's OK.
}
q();
w();

您可以在函数外部声明变量

var arrtime, arrayvals;

function showTest(str) {
        arrayvals = JSON.parse(xmlhttp.responseText);
        arrtime= (arrayvals[0]);
}
var testvar=arrtime;
alert (testvar);

全局变量将在函数的分数之外声明,但分配到函数的范围内。

您只需省略表示只能从函数范围访问的变量的
var

最好不要省略
var
,而是将其移到您希望的范围内全球的,那么我觉得没关系。但你是对的。每个变量都应该用var声明……我需要在其他几个函数中使用这些变量,我相信最简单的方法是使它们全局化。感谢上面的内容,我将尝试一下这是最简单的方法,但不是最明智的(比如转向原力的黑暗面)。引入一个全局对象并将这些变量存储为其属性。这样,您就可以在具有相同名称的变量的本地作用域中隐藏全局变量。对象被实例化为
obj={param:value,other_-param:other_-value}
?我创建dbresults=newobject();我在开始时声明了所有全局变量。然后在函数中我说dbresults.arrtime=(arrayvals[0]);然后在函数外部,我可以说document.getElementById(“testing”).innerHTML=dbresults.arrtime;这行得通吗?不行。JS对象并不像在C/PHP/JAva等中那样创建。它只是
{}
:)。您不必在对象声明中设置所有变量,您可以稍后添加它(搜索,我们一两天前就有这个问题了)。所以,您只需执行
globals={}
;然后,您可以在任何需要的地方使用
globals.param
访问它。我不确定是否正确地跟踪了您。我这样做了:dbresults={};函数showTest(str){……dbresults.arrtime=(arrayvals[0]);document.getElementById(“范围”).innerHTML=dbresults.arrtime;}document.getElementById(“测试”).innerHTML=dbresults.arrtime;因此,函数中的部分成功地写入到我测试它的元素中,但函数外的相同内容给了我这个错误:108UncaughtTypeError:无法将属性“innerHTML”设置为null。如果你能告诉我该写什么代码,或者给像我这样的笨蛋举个例子,我会很感激的!
var arrtime, arrayvals;

function showTest(str) {
        arrayvals = JSON.parse(xmlhttp.responseText);
        arrtime= (arrayvals[0]);
}
var testvar=arrtime;
alert (testvar);
var testvar;
function showTest(str) {
........

        var arrayvals = JSON.parse(xmlhttp.responseText);
        var arrtime= (arrayvals[0]);
        testvar = arrtime;
}
alert (testvar);