日期:2014-05-16  浏览次数:20361 次

JS:请教关于块级作用相关
第一问:
(functoin(){
内容
})(test)

这里的test是函数名还是变量,需要在哪儿定义了才能用?

第二问:
(function(args){

  var IS = {};
  IS.init = function(){alert(args.id[1]);};
   
})()

调用的时候用<script>IS.init(id:'1',name:'user');</script>,提示出错呢?

------解决方案--------------------
(function(a){
alert(a);
})(4);
所以第一问应该是变量 是传入的参数
(function(args){

var IS = {};
IS.init = function(){alert(args.id[1]);};
 
})()
这时匿名函数在定义时就调用了 IS是局部变量 所以在外部不可访问
(function(){
if(!window['IS']){
window['IS']={}; 
}
function init(args){
alert(args.id);
}
window['IS']['init']=init;
})()
var a={id:'1',name:'user'}
IS.init(a);
改成这样试试

------解决方案--------------------
test是什么根据里面的内容而定,一般是一个对象,window,document

id:'1',name:'user'不是一个完整的数据类型,应该这样
<script>
(function(w){

w.IS = {};
IS.init = function(args){alert(args.id);alert(args.name);};
 
})(window)
</script>

<script>IS.init({id:'1',name:'user'});</script>