• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

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

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

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

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

          最近在整理javascript 學(xué)習,發(fā)現(xiàn)這個問題了 ,在網(wǎng)上發(fā)現(xiàn)這么個解釋 最清楚 最明白 ;

          (function(){})()

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

          ()是最高優(yōu)先級的,所以先執(zhí)行function(){},

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

          接著就是調(diào)用xx()了;

          給個例子

          JScript codefunctionf1(a)

          { alert(a);

          functionf2(a)

          { returnfunction(){ alert(a); }

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

          也就是f2()

          還是(function f2(a){

          return function(){

          alert(a);

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

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

          (function() {

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

          isUndefined: function(o) {

          return typeof o === 'undefined';

          isString: function(o) {

          return typeof o === 'string';

          ---調(diào)用方法

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

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

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

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

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

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

          //---調(diào)用方法

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

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

          答:

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

          但是,如果按照你寫的

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

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

          這么寫有什么好處??

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

          寫法1:

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

          寫法2:

          JScript codevara=2; alert(a);

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

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

        JavaScript中的with關(guān)鍵字07-24

        在Java中執(zhí)行JavaScript代碼07-14

        Javascript中typeof 用法歸納09-27

        抽象語法樹在JavaScript中的應(yīng)用08-18

        JavaScript中的三種對象10-24

        perl- javascript中class的機制05-03

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

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

        javascript中for/in循環(huán)以及常見的使用技巧06-24

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 尤物在线精品国产 | 亚洲成AV人片在线观看网址 | 亚洲国产欧美亚洲gif动图 | 五月天在线亚洲牛 | 这里有亚洲精品在线 | 亚洲最大色资源在线观看 |