<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

             javascript中(function{})()寫法解析

            時間:2024-10-24 08:23:30 JavaScript 我要投稿
            • 相關推薦

             javascript中(function{})()寫法解析

              javascript 中(function{})()這種寫法什么意思?

              最近在整理javascript 學習,發現這個問題了 ,在網上發現這么個解釋 最清楚 最明白 ;

              (function(){})()

              相當于先定義 function xx(){},后調用 xx();

              ()是最高優先級的,所以先執行function(){},

              這個定義了一個匿名函數,等于xx=function(www.diannao114.cn){}

              接著就是調用xx()了;

              給個例子

              JScript codefunctionf1(a)

              { alert(a);

              functionf2(a)

              { returnfunction(){ alert(a); }

              }這里的var x=f2 就等于把函數傳遞給了f2,然后要執行這個函數,就必須加() 也就是x();

              也就是f2()

              還是(function f2(a){

              return function(){

              alert(a);

              另外還有一個問題就是命名空間的問題

              YY = YY||{};---聲明一個叫YY的命名空間(定義一個全局的變量)

              (function() {

              YY.Lang=function() {------聲明一個叫YY.Lang的命名空間(通過全局變量的增加屬性的方式把閉包里的對象傳到全局變量中,實現代碼封裝的效果)

              isUndefined: function(o) {

              return typeof o === 'undefined';

              isString: function(o) {

              return typeof o === 'string';

              ---調用方法

              alert(YY.Lang.isString('test me'));

              這時候就有人不明了,樓上為什么要加(function() { 和)(); 最外面的這兩行,有什么用啊?

              JScript codeYY=YY||{}; //---聲明一個叫YY的命名空間(定義一個全局的變量)

              function() { YY.Lang=function() {

              //------聲明一個叫YY.Lang的命名空間(通過全局變量的增加屬性的方式把閉包里的對象傳到全局變量中,實現代碼封裝的效果) isUndefined:function(o) {returntypeofo==='undefined'; },

              isString:function(o) {returntypeofo==='string'; } }; }

              //---調用方法

              alert(YY.Lang.isString('test me'));

              疑問在這: 注釋掉這兩行有什么不一樣的呢?不就是申明嗎,為什么要用()()執行一下啊?

              答:

              (function(){})()意思是立即執行前一個括號里的function,相當于是一個匿名函數;由于里面的代碼的執行,定義了YY.Lang這個對象,所以可以執行alert(YY.Lang.isString('test me'));調用isString方法。

              但是,如果按照你寫的

              functionaa(){..};//只是定義了一個叫aa的函數,但是并沒有執行

              alert(YY.Lang.isString('test me'));//執行的時候會報找不到isString的方法。

              這么寫有什么好處??

              (function{})()的寫法有個好處,就是能很好的利用javascript的變量的可見范圍為執行腳本時節省空間。例如以下寫法1和寫法2達到的目的是一樣的,但是寫法1的由于a變量的可見范圍只是在匿名函數體內,所以a在執行完這個匿名函數后就釋放空間了。但是寫法2會一直存在該頁面中。

              寫法1:

              JScript code(function(){vara=2; alert(a); })();

              寫法2:

              JScript codevara=2; alert(a);

            【 javascript中(function{})()寫法解析】相關文章:

            IE與Firefox在JavaScript上的不同寫法小結07-22

            JavaScript中的with關鍵字07-24

            在Java中執行JavaScript代碼07-14

            Javascript中typeof 用法歸納09-27

            抽象語法樹在JavaScript中的應用08-18

            JavaScript中的三種對象10-24

            perl- javascript中class的機制05-03

            JavaScript中push(),join() 函數實例詳解09-05

            詳解JavaScript中的splice()使用方法08-20

            javascript中for/in循環以及常見的使用技巧06-24

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看