可变外部功能范围

时间:2015-07-23 15:33:20

标签: javascript jquery scope

我有读取json文档的函数,dayNames和monthNames在函数外部可见,但日期格式不可见。在内部函数中,它正确地打印其值,但在外部它不会更新外部值。那么为什么dateFormat不会更新外部函数呢?

var dayNames = [];
var monthNames = [];
var dateFormat = "";
$.getJSON("/Scripts/cldr/main/"+ culture + "/ca-gregorian.json", function (json) {
    $.each(json.main.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).dates.calendars.gregorian.days.format.short, function (key, val) {
        dayNames.push(val);
    });
    $.each(json.main.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).dates.calendars.gregorian.months["stand-alone"].wide, function (key, val) {
        monthNames.push(val);
    });
    dateFormat = json.main.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).dates.calendars.gregorian.dateFormats.medium;
    console.log(dateFormat);  //Output: y-MM-dd
});
console.log(dateFormat); //Output: 

1 个答案:

答案 0 :(得分:4)

问题是$.getJSON()是异步调用。函数外部的console.log(dateFomrat)在函数完成之前运行。代码在$.getJSON()运行时继续,因此当第二个(外部)dateFormat执行时,console.log()未设置。

相关问题