javascript - 在没有全局变量的情况下使变量在函数外部可用

标签 javascript titanium

我正在努力了解如何在 javascript 中传递信息。有好心人可以告诉我如何从一个函数中获取一个变量并在另一个函数中使用它,但又不使该变量成为全局变量。我想我需要使用 return,但我被卡住了,不确定要用谷歌搜索什么来获得我可以从中学到的东西。

例如,如何使“json”变量可用,以便在“MasterView”函数中使用它。提前谢谢你。

function fetchData() {
var xhr = Ti.Network.createHTTPClient({
    onload : function(e) {
        Ti.App.Properties.setString('cachedJson', this.responseText);
        var json = JSON.parse(Ti.App.Properties.getString('cachedJson',''));
    },
    timeout: 5000
});

xhr.open("GET", site_url + "?get_json=postObjects");
xhr.send();
}

function MasterView() {};

最佳答案

有很多方法可以在不使用全局变量的情况下解决这个问题。

此外,“不使变量成为全局变量”是什么意思?
您想避免污染全局命名空间,或者您只是不想让您的变量在所有函数中可用?

这是一种将值从一个函数传递到另一个函数的方法:

function a(){
    var hello = "world";
    return hello;
}

function b(){
    var result = a();
    console.log(result);
}

如您所见,函数 a() 返回值为“world”的变量 hello
现在,如果您调用函数 b(),它会将 a() 的返回值存储在名为 result 的变量中,然后将其记录到控制台。

另一种选择是在函数中使用参数(有时称为参数):

function a(){
    var hello = "world";
    b(hello);
}

function b(arg){
    console.log(arg);
}

在这种情况下,如果您调用函数 a(),它将立即调用函数 b(),传递变量 hello,因此 b() 将记录“world”。
当然,后一种方法并不总是一个好的选择,即您根本不希望您的第一个函数调用另一个函数。在这种情况下,您可以执行以下操作:

function a(){
    var hello = "world";
    return hello;
}

function b(arg){
    console.log(arg);
}

然后调用函数 b() 为:b(a());
这样您就可以将函数 a() 的返回值作为参数传递给函数 b()。

希望这能解决您的大部分问题。 :)

关于javascript - 在没有全局变量的情况下使变量在函数外部可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22270838/

相关文章:

javascript - Ti.App.fireEvent - 引用错误 Ti 未定义

javascript - 获取 HTML 表单值

javascript - Mongo --quiet 不抑制 --eval 输出

javascript - 在 Titan Appcelator ios 中实现 otr.js?

macos - Titanium 开发人员在启动时崩溃(很好)

android - Titanium Android 标签栏文字颜色

android - 无法在 Titanium 中使用相机

javascript - 使用给定的数字数组更改 JavaScript 中数字的基数

javascript - 数组对象的属性测试不等于原始值

javascript - <option> 的图像在 firefox 中有效,但在其他浏览器中无效