Javascript-在函数定义的变量中使用

Javascript-在函数定义的变量中使用,javascript,jquery,Javascript,Jquery,我想执行这个函数,并在函数外部使用变量,但在每个函数内部使用变量。我怎样才能让它工作 $('.social').each(function() { url = "http:www.google.com"; bit_url(url); $(element).append(urlshortened); }); function bit_url(url) { var url = url; var username = "...";

我想执行这个函数,并在函数外部使用变量,但在每个函数内部使用变量。我怎样才能让它工作

$('.social').each(function() {
    url = "http:www.google.com";
    bit_url(url);    
    $(element).append(urlshortened);
});

function bit_url(url) {
        var url = url;
        var username = "...";
        // bit.ly username
        var key = "...";
        $.ajax({
            url : "http://api.bit.ly/v3/shorten",
            data : {
                longUrl : url,
                apiKey : key,
                login : username
            },
            dataType : "jsonp",
            success : function(v) {
                urlshortened = v.data.url;
            }
        });
    }
Ajax中的“A”代表异步代码,它不能像那样工作,您需要回调

function bit_url(url) {
   [...]
   //return the Deffered object
   return $.ajax({ [...]
}

$('.social').each(function() {
    [...]
    //attach a `done` callback to the returned $.ajax's Deferred instance
    bit_url(url).done(function(v) {
        $(element).append(v.data.url);
    });
});
相当于
$。ajax
success
,我在
范围内附加了
done
处理程序。每个
范围都可以访问
范围内的所有变量

尽管如此,如果
$(element)
始终是同一个元素,那么@JohnJohnGa的回答可以通过将
append
放入成功处理程序中来实现


我假设您希望替换
中的锚定“
href
。由于问题的性质,每个
都将存储对
中链接的引用。每个
都将在回调中使用该引用。

您可以将结果附加到
success
函数中

success: function (v) {
    urlshortened = v.data.url;
    $(element).append(urlshortened)
}
因此,您的代码将是:

$('.social').each(function () {
    url = "http:www.google.com";
    bit_url(url);
});

function bit_url(url) {
    var url = url;
    var username = "...";
    // bit.ly username
    var key = "...";
    $.ajax({
        url: "http://api.bit.ly/v3/shorten",
        data: {
            longUrl: url,
            apiKey: key,
            login: username
        },
        dataType: "jsonp",
        success: function (v) {
            $(element).append(v.data.url);
        }
    });
}

什么是
元素
?(如
$(element).append(urlshorted)
)哪个变量?¯\_(ツ)_/''任何元素,都不重要您在谈论哪个变量?请更具体一点变量urlshortener将在函数bit_url中定义