- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
最近在整理javascript学习,发现这个问题了,在网上发现这么个解释最清楚最明白;
(function(){})()
相当于先定义functionxx(){},后调用xx();()是最高优先级的,所以先执行function(){},这个定义了一个匿名函数,等于xx=function(){}接着就是调用xx()了;
给个例子JScriptcode
functionf1(a)
{ alert(a);
}
functionf2(a)
{ returnfunction(){alert(a);}
}
这里的varx=f2就等于把函数传递给了f2,然后要执行这个函数,就必须加()也就是x();
也就是f2()
还是(functionf2(a){returnfunction(){alert(a);
})();
另外还有一个问题 就是命名空间的问题
YY=YY||{};---声明一个叫YY的命名空间(定义一个全局的变量)(function(){
YY.Lang=function(){------声明一个叫YY.Lang的命名空间(通过全局变量的增加属性的方式把闭包里的对象传到全局变量中,实现代码封装的效果)isUndefined:function(o){
returntypeofo===undefined;
},
isString:function(o){
returntypeofo===string;
}
};
})();
---调用方法alert(YY.Lang.isString(testme));
这时候就有人不明了,楼上为什么要加(function(){和)();最外面的这两行,有什么用啊?
JScriptcode
YY=YY||{};//---声明一个叫YY的命名空间(定义一个全局的变量)
//(
function(){YY.Lang=function(){
// 声明一个叫YY.Lang的命名空间(通过全局变量的增加属性的方式把闭包里的对象传
到全局变量中,实现代码封装的效果)isUndefined:function(o){returntypeofo===undefined;},
isString:function(o){returntypeofo===string;}};}
//)();
// 调用方法
alert(YY.Lang.isString(testme));
疑问在这: 注释掉这两行有什么不一样的呢?不就是申明吗,为什么要用
()()执行一下啊?答:
(
functionaa(){..};//只是定义了一个叫aa的函数,但是并没有执行
alert(YY.Lang.isString(testme));//
alert(YY.Lang.isString(testme));//执行的时候会报找不到isString的方法。这么写有什么好处
(function{})()的写法有个好处,就是能很好的利用javascript的变量的可见范围为执行脚本时节省空间。例如以下写法1和写法2达到的目的是一样的,但是写法1的由于a变量的可见范围只是在匿名函数体内,所以a在执行完这个匿名函数后就释放空间了。但是写法2会一直存在该页面中。
写法1:JScriptcode
(function(){vara=2;alert(a);})();
写法
写法2:JScriptcode
vara=2;
vara=2;alert(a);
您可能关注的文档
- I、p、B 帧编码的基本流程.docx
- I2C GPIO接口测试分析和总结.docx
- I1500011604047分析和总结分析和总结.docx
- IABP知情同意书分析和总结.docx
- IATF16949事态升级控制程序.docx
- ibeport操作说明分析和总结.docx
- IBM p560Q analysis report p560Q分析报告分析和总结.docx
- IBM pSeries 协同与控制应用解决方案ver6.docx
- IBM大客户策略规划.docx
- IBM自动化测试分析和总结.docx
- 2021-2022学年湖南省常德市安乡县四年级上学期期中语文真题及答案.pdf
- 2023-2024学年河南省南阳市社旗县四年级上学期期中数学真题及答案.pdf
- 2022-2023学年云南省曲靖市四年级下学期期末数学真题及答案.pdf
- 2021-2022学年河南省周口市鹿邑县二年级下册月考语文真题及答案.pdf
- 2018年河南焦作解放区教师招聘考试真题及答案.pdf
- 2019年江西公务员行测考试真题及答案-乡镇.pdf
- 2019中国石油报社应届高校毕业生招聘试题及答案解析.pdf
- 光大银行招聘应届毕业生能力素质测试笔试真题及答案.pdf
- 2024年广西百色教师招聘考试模拟题及答案.pdf
- 2021-2022学年浙江绍兴诸暨市五年级上册语文期末试卷及答案.pdf
文档评论(0)