Javascript 将局部变量从函数中传递出去,使之成为全局变量
我花了两个小时想弄明白怎么做,但什么都没用。下面是我的一些代码的简短示例。我想从函数中获取arrtime和其他几个类似的变量,以便全局使用它们。有什么想法吗?请不要太复杂,我不是专家(显然)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
执行此操作的干净方法是使用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);