(function)定义的困惑,求助? (function(){ //代码})();我刚学javascript,以上代码的定义我怎么也不明白是什么意思,在function这个函数的定义前后加(),请各请帮忙解释下,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你一般定一个函数,比如说function A(){}那你调用的时候是A()才执行同样的,加()表示立即执行 噢,多谢,那请问在一个函数function之前加一个SetHome:或其它标识符然后再加个:号起什么作用啊.比如说:JsLoader:function(d,a,e,c){}SetKey:function(c,a){}JsLoader:和SetKey:分别代表什么意思啊? 比如funtion a(){ return "a";}这个是个函数function b(){ return function(){ return ("a"); }}执行var a1=a() 的时候,得到的是"a",执行var b1=b() 的时候,得到的是一个function的回调,这时候你执行var c=b1(),就相当于你执行var c=a()这样所以写成function(){return function(){}}() 这样也是,因为里面是个回调的函数,函数执行的话需要()不知这样说是否明白2. JsLoader:function(d,a,e,c) {} 等于 function JsLoader:function(d,a,e,c){} 第一个是自执行的匿名函数,可以用来命名namespcce第二情况一般用在对象的定义中,obj = {name: function (){};//定义对象的属性name}可以通过obj.name();调用定义的方法 打错了2.等于function JsLoader(d,a,e,c){} (function(){ alert("aa");})();//直接显示aafunction test(){ alert("bb");}(test)();///没有脚本错误,显示bb,语法极像方法调用methodName();(test())();//没有脚本步错误,显示bb1楼的看起来解释的不错,本人认为这种语法能够立即执行正是体现了脚本(解释性)语言的特性--任何声明都是对象,function(){ alert("aa");}它本身的原型(prototype)就是从Function对象来的,故这段代码反映了此对象的type是function,就像test方法,解释器并不会整体去看test()而是先去查找identifier(标示)为test的类型,然后再决定下一步该怎么执行,如果type是function那么标示+括弧就会执行,否则按其他类型进行处理,另外要考虑此匿名函数之外的括弧,在计算机语言里边括弧的优先级别相当高,故这一点也相当重要再看看('000')();//没有脚本错误,'000'(a='000')();//也不会有脚本错误总结:(statement)();只要statement是对象是null,undefined也没关系,因为在js里边null和undefined可以表示boolean 首先functoin(){} 返回一个函数入口点,然后你可以把函数入口点传给一个变量,如 var foo=function(){},你可以通过在入口点foo后边加括号调用,,如foo(),所以 你可以直接函数入口点后边加括号调用,再根据括号的优先原则就变成了(function(){})() (function() { //代码 })(); 这是js中的闭包,可以网上查下js闭包的知识 为什么有的IE浏览器不执行JAVASCRIPT的函数? jquery 捕获当前光标位置 一个正则小问题 如何限制onclick onfocus事件只触发一个 javascript单元测试的一些问题 document.getElementById("sp"+aR[1]).innerHTML=tmpTd赋值语句运行后,两者内容不相同 求一段JS代码 判断是否是工作日 怎样用向上up键代替shift+tab键??? 如何在js中拦截alt+f4? 怎么把数据存到内存中?? lhgcore -> lhgeditor小型在线编辑器组件发布 iframe中document.write()的问题
那你调用的时候是A()才执行同样的,加()表示立即执行
比如说:
JsLoader:function(d,a,e,c)
{}
SetKey:function(c,a)
{}
JsLoader:和SetKey:分别代表什么意思啊?
比如
funtion a(){
return "a";
}
这个是个函数function b(){
return function(){
return ("a");
}
}
执行var a1=a() 的时候,得到的是"a"
,执行var b1=b() 的时候,得到的是一个function的回调,这时候你执行var c=b1(),就相当于你执行var c=a()这样
所以写成function(){return function(){}}() 这样也是,因为里面是个回调的函数,函数执行的话需要()
不知这样说是否明白2. JsLoader:function(d,a,e,c)
{}
等于 function JsLoader:function(d,a,e,c){}
第二情况一般用在对象的定义中,obj = {
name: function (){};//定义对象的属性name
}可以通过obj.name();调用定义的方法
打错了
2.等于function JsLoader(d,a,e,c){}
alert("aa");
})();//直接显示aa
function test(){
alert("bb");
}
(test)();///没有脚本错误,显示bb,语法极像方法调用methodName();
(test())();//没有脚本步错误,显示bb
1楼的看起来解释的不错,本人认为这种语法能够立即执行正是体现了脚本(解释性)语言的特性--任何声明都是对象,function(){
alert("aa");
}它本身的原型(prototype)就是从Function对象来的,故这段代码反映了此对象的type是function,就像test方法,解释器并不会整体去看test()而是先去查找identifier(标示)为test的类型,然后再决定下一步该怎么执行,如果type是function那么标示+括弧就会执行,否则按其他类型进行处理,另外要考虑此匿名函数之外的括弧,在计算机语言里边括弧的优先级别相当高,故这一点也相当重要
再看看('000')();//没有脚本错误,'000'
(a='000')();//也不会有脚本错误
总结:(statement)();只要statement是对象是null,undefined也没关系,因为在js里边null和undefined可以表示boolean
functoin(){} 返回一个函数入口点,然后你可以把函数入口点传给一个变量,如 var foo=function(){},
你可以通过在入口点foo后边加括号调用,,如foo(),所以 你可以直接函数入口点后边加括号调用,再根据括号的优先原则就变成了(function(){})()
{
//代码
})(); 这是js中的闭包,可以网上查下js闭包的知识