我正在尝试学习使用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日志js
和css
什么都没有返回,似乎有问题。我谷歌在js = ['values']
和js : ['values']
之间有什么差异吗?
感谢您的光临。
答案 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);
};