<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  •  javascript中(function{})()寫法解析

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

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

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

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

      (function(){})()

      相當(dāng)于先定義 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,相當(dāng)于是一個匿名函數(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

    主站蜘蛛池模板: 黑巨人与欧美精品一区 | 亚洲欧美精品综合中文字幕| 国产精品分类视频分类一区| 精品午夜国产人人福利| 久久国产精品一区二区| 免费精品无码AV片在线观看| 久久精品亚洲欧美日韩久久| 久久久精品一区二区三区| 麻豆亚洲AV永久无码精品久久 | 国产精品久久国产精麻豆99网站 | 亚洲精品国产av成拍色拍| 国产精品青草视频免费播放| 国产日韩一区在线精品欧美玲| 日韩精品视频一区二区三区| 免费短视频软件精品一区二区| 亚洲国产精品一区二区久久| 97久久久精品综合88久久| 少妇精品无码一区二区三区| 四虎永久在线精品国产免费| 人妻精品久久久久中文字幕一冢本 | 亚洲码国产精品高潮在线| 国产精品成人69XXX免费视频| 99精品国产一区二区三区| 无码国内精品人妻少妇| 亚洲A∨精品一区二区三区| 国产精品自在线拍国产电影| 久久精品国产99国产电影网| 精品久久久久香蕉网| 亚洲国产美女精品久久久久∴| 欧美精品丝袜久久久中文字幕| 国产乱人伦偷精品视频不卡| 99久久精品国产一区二区| 国产一区二区精品久久| avtt天堂网久久精品| 精品国产一区二区三区不卡| 亚洲精品中文字幕乱码三区| 亚洲麻豆精品国偷自产在线91| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国产精品人成在线播放新网站| 日产精品久久久一区二区| 亚洲AV永久纯肉无码精品动漫|