外部JavaScript文件使用的JavaScript内联变量?(可变范围问题)

外部JavaScript文件使用的JavaScript内联变量?(可变范围问题),javascript,jquery,Javascript,Jquery,我有以下代码: <script type="text/javascript"> var ops = { slideshow: { slices: 20, boxCols: 11, boxRows: 6, animSpeed: 750, pauseTime: 6000 }, tweets: {

我有以下代码:

<script type="text/javascript">
    var ops = {
        slideshow: {
            slices: 20,
            boxCols: 11,
            boxRows: 6,
            animSpeed: 750,
            pauseTime: 6000
        },
        tweets: {
            username: 'stigmahost',
            count: 6,
            refresh_interval: 120,
            auto_join_text_default: 'I said,',
            auto_join_text_ed: "I",
            auto_join_text_ing: "I am",
            auto_join_text_reply: "I replied to",
            auto_join_text_url: "I was looking at",
            just_now: 'Now',
            X_seconds_ago: '{x} seconds ago',
            about_a_minute_ago: 'About a minute ago',
            about_X_minutes_ago: 'About {x} minutes ago',
            about_an_hour_ago: 'About an hour ago',
            about_X_hours_ago: 'About {x} hours ago',
            about_a_day_ago: 'About a day ago',
            about_X_days_ago: 'About {x} ημέρες ago'
        },
        map:
        {
            latitude: 37.966667,
            longitude: 23.716667,
            zoom: 8
        }
    }
</script>
在我的控制台中,我得到了未定义的结果

我做错什么了吗


我取得了一些进展。js.js文件如下所示:

jQuery(document).ready(
    function()
    {
        console.dir(typeof ops);
        ...
        File code here
        ...
    }
);
上述代码在我的控制台中返回“未定义”

现在我已经试过了:

console.dir(typeof ops);

jQuery(document).ready(
    function()
    {
        console.dir(typeof ops);
        ...
        File code here
        ...
    }
);
在我的控制台中,第一次尝试返回“Object”,第二次尝试返回“undefined”

这有帮助吗

$.getScript("js.js", function() {
    //declare ops-variable in here and use it
});

没有jquery:

var Loader = function () {

}
Loader.prototype = {
require: function (scripts, callback) {
    this.loadCount      = 0;
    this.totalRequired  = scripts.length;
    this.callback       = callback;

    for (var i = 0; i < scripts.length; i++) {
        this.writeScript(scripts[i]);
    }
},
loaded: function (evt) {
    this.loadCount++;

    if (this.loadCount == this.totalRequired && typeof this.callback == 'function') this.callback.call();
},
writeScript: function (src) {
    var self = this;
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = src;
    s.addEventListener('load', function (e) { self.loaded(e); }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
}
}

 var l = new Loader();
l.require([
"js.js"
function() {
    // do same stuff in this callback
});
var Loader=函数(){
}
Loader.prototype={
require:函数(脚本、回调){
此参数为0.loadCount;
this.totalRequired=scripts.length;
this.callback=回调;
对于(var i=0;i
我尝试了代码(没有googleapis)它似乎工作得很好,你能告诉我们你如何尝试访问ops吗?我使用的是chrome。我不能使用它,因为jQuery库正在将它包含到js.js文件中以优化速度。你的答案因为信息而被我推高;)谢谢…@MerianosNikos我添加了一个非jQuery异步解决方案。也许它可以帮助你知道,wr是什么使用jQuery(document)中的外部变量。读取(…@MerianosNikos在您尝试使用文档就绪函数时是否加载jQuery?@MerianosNikos是否尝试将其替换为
$(窗口)。加载(函数(){});
$.getScript("js.js", function() {
    //declare ops-variable in here and use it
});
var Loader = function () {

}
Loader.prototype = {
require: function (scripts, callback) {
    this.loadCount      = 0;
    this.totalRequired  = scripts.length;
    this.callback       = callback;

    for (var i = 0; i < scripts.length; i++) {
        this.writeScript(scripts[i]);
    }
},
loaded: function (evt) {
    this.loadCount++;

    if (this.loadCount == this.totalRequired && typeof this.callback == 'function') this.callback.call();
},
writeScript: function (src) {
    var self = this;
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = src;
    s.addEventListener('load', function (e) { self.loaded(e); }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
}
}

 var l = new Loader();
l.require([
"js.js"
function() {
    // do same stuff in this callback
});