- 相關(guān)推薦
javascript中(function{})()寫(xiě)法解析
javascript 中(function{})()這種寫(xiě)法什么意思?
最近在整理javascript 學(xué)習,發(fā)現這個(gè)問(wèn)題了 ,在網(wǎng)上發(fā)現這么個(gè)解釋 最清楚 最明白 ;
(function(){})()
相當于先定義 function xx(){},后調用 xx();
()是最高優(yōu)先級的,所以先執行function(){},
這個(gè)定義了一個(gè)匿名函數,等于xx=function(www.diannao114.cn){}
接著(zhù)就是調用xx()了;
給個(gè)例子
JScript codefunctionf1(a)
{ alert(a);
functionf2(a)
{ returnfunction(){ alert(a); }
}這里的var x=f2 就等于把函數傳遞給了f2,然后要執行這個(gè)函數,就必須加() 也就是x();
也就是f2()
還是(function f2(a){
return function(){
alert(a);
另外還有一個(gè)問(wèn)題就是命名空間的問(wèn)題
YY = YY||{};---聲明一個(gè)叫YY的命名空間(定義一個(gè)全局的變量)
(function() {
YY.Lang=function() {------聲明一個(gè)叫YY.Lang的命名空間(通過(guò)全局變量的增加屬性的方式把閉包里的對象傳到全局變量中,實(shí)現代碼封裝的效果)
isUndefined: function(o) {
return typeof o === 'undefined';
isString: function(o) {
return typeof o === 'string';
---調用方法
alert(YY.Lang.isString('test me'));
這時(shí)候就有人不明了,樓上為什么要加(function() { 和)(); 最外面的這兩行,有什么用?
JScript codeYY=YY||{}; //---聲明一個(gè)叫YY的命名空間(定義一個(gè)全局的變量)
function() { YY.Lang=function() {
//------聲明一個(gè)叫YY.Lang的命名空間(通過(guò)全局變量的增加屬性的方式把閉包里的對象傳到全局變量中,實(shí)現代碼封裝的效果) isUndefined:function(o) {returntypeofo==='undefined'; },
isString:function(o) {returntypeofo==='string'; } }; }
//---調用方法
alert(YY.Lang.isString('test me'));
疑問(wèn)在這: 注釋掉這兩行有什么不一樣的呢?不就是申明嗎,為什么要用()()執行一下?
答:
(function(){})()意思是立即執行前一個(gè)括號里的function,相當于是一個(gè)匿名函數;由于里面的代碼的執行,定義了YY.Lang這個(gè)對象,所以可以執行alert(YY.Lang.isString('test me'));調用isString方法。
但是,如果按照你寫(xiě)的
functionaa(){..};//只是定義了一個(gè)叫aa的函數,但是并沒(méi)有執行
alert(YY.Lang.isString('test me'));//執行的時(shí)候會(huì )報找不到isString的方法。
這么寫(xiě)有什么好處??
(function{})()的寫(xiě)法有個(gè)好處,就是能很好的利用javascript的變量的可見(jiàn)范圍為執行腳本時(shí)節省空間。例如以下寫(xiě)法1和寫(xiě)法2達到的目的是一樣的,但是寫(xiě)法1的由于a變量的可見(jiàn)范圍只是在匿名函數體內,所以a在執行完這個(gè)匿名函數后就釋放空間了。但是寫(xiě)法2會(huì )一直存在該頁(yè)面中。
寫(xiě)法1:
JScript code(function(){vara=2; alert(a); })();
寫(xiě)法2:
JScript codevara=2; alert(a);
【 javascript中(function{})()寫(xiě)法解析】相關(guān)文章:
IE與Firefox在JavaScript上的不同寫(xiě)法小結07-22
JavaScript中的with關(guān)鍵字07-24
在Java中執行JavaScript代碼07-14
抽象語(yǔ)法樹(shù)在JavaScript中的應用08-18
JavaScript中的三種對象10-24
perl- javascript中class的機制05-03
JavaScript中push(),join() 函數實(shí)例詳解09-05