数组在jquery上是空的?

时间:2011-08-03 13:35:48

标签: javascript jquery

我正在尝试学习使用jQuery从头开始创建我的第一个动态加载器(用于学习目的)这里是我被困住的地方:

<script type="text/javascript">
jQuery.learningdynamicloader= function(){
     var js = [];
     var css = [];
     console.log(js,css);
};
</script>
<script>
$(document).ready(function() {
    $.learningdynamicloader(function(){
        js = ['jquery','test'];
        css = ['css','test'];
    });
});
</script>

我的firebug日志jscss什么都没有返回,似乎有问题。我谷歌在js = ['values']js : ['values']之间有什么差异吗?

感谢您的光临。

2 个答案:

答案 0 :(得分:5)

尝试将数组作为参数传递,而不是在本地声明它们:

jQuery.learningdynamicloader= function(js, css){
    console.log(js,css);
};

然后:

var js = ['jquery','test'];
var css = ['css','test'];
$.learningdynamicloader(js, css);

编辑:我认为你所追求的是这样的事情:

jQuery.learningdynamicloader= function(params){
    console.log(params["js"], params["css"]);
};

然后:

$(document).ready(function() {
    $.learningdynamicloader({ "js": ['jquery','test'], "css": ['css','test'] });
});

这会将复杂对象传递给你的函数,它有两个属性,每个属性都有自己的。

答案 1 :(得分:1)

很抱歉这样说回去阅读javascript,你不能通过传递函数作为参数覆盖函数

jQuery.learningdynamicloader= function(fn){
     js = [];
     css = [];
     fn();
     console.log(js,css);
};

同样可以这样做,这个将使用函数私有范围,顶部将使用窗口范围

jQuery.learningdynamicloader= function(fn){
         var js = [];
         var css = [];
         fn(js, css);
         console.log(js,css);
    };