نمایش نتایج 1 تا 8 از 8

نام تاپیک: (function() {...})???

  1. #1

    (function() {...})???

    سلام. در يك تگ جاوا اسكريپت چنين چيزي نوشته شده بود :

    (function(){
    if (_isIE&&(typeof _lastCalFunc!='function'||!_checkCSS())) {
    var u=window.location.href;
    window.location.href=(u.indexOf('http:')==0)
    ? u.replace(/^http:/,'https:')
    : 'http://www.google.com/support/calendar/bin/answer.py?answer=34581&' +
    "hl\75en";
    }
    })();
    لطفا راهنمايي بفرماييد كه اين چه نوع function اي است ؟!!!

  2. #2

    نقل قول: (function() {...})???

    کد رو اینجوری بزارید که خوانا تر باشه

    function(){
    if (_isIE&&(typeof _lastCalFunc!='function'||!_checkCSS())) {
    var u=window.location.href;
    window.location.href=(u.indexOf('http:')==0)
    ? u.replace(/^http:/,'https:')
    : 'http://www.google.com/support/calendar/bin/answer.py?answer=34581&' +
    "hl\75en";
    }
    })();
    این تابع همین جوری به صورت مجزا نیست و حتما به جایی ارسال شده
    اگه دقت کنید در این پست بنده هم همین روش رو استفاده کردم https://barnamenevis.org/forum
    /showthread.php?t=116311

    به عنوان مثال میتونید تعریف کنید :

    window.document.onload = function(){
    alert('Document Loaded')
    }
    ایندرست مثله اینه که اینطور بنویسید :



    function sayCompleted(){
    alert('Document Loaded')
    }

    window.document.onload = sayComleted;


  3. #3

    نقل قول: (function() {...})???

    از راهنمايي مفيدتون متشكرم. پس يعني اين يك تابع بدون نام هست كه خودشو فراخواني مي كنه ؟!!

    در ضمن اين شكل تعريف تابع چه مزيتي داره؟

  4. #4

    نقل قول: (function() {...})???

    نقل قول نوشته شده توسط cyber_world مشاهده تاپیک
    پس يعني اين يك تابع بدون نام هست كه خودشو فراخواني مي كنه ؟!!
    دقیقا درسته

    نقل قول نوشته شده توسط cyber_world مشاهده تاپیک
    اين شكل تعريف تابع چه مزيتي داره؟
    گاهی به دلیل محدودیت های حوزه توابع در جاوا اسکریپت مجبور می شیم از این شکل استفاده کنیم
    در بیشتر اوقات این شکل از تابع برای پاسخ گویی به رویداد ها مناسبه و استفاده می شه

    window.document.onload = alert('Document Loaded');

    روش بالا درسته اما اگه بخواید چند خط کد پیچیده تر اجرا بشه دیگه این روش کارامد نیست
    و باید از function های به اصطلاح خودتون بی نام استفاده کنید

    گذشته از این باعث کاهش حجم کد نویسی می شه

  5. #5
    کاربر دائمی آواتار eAmin
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Node.js
    پست
    447

    نقل قول: (function() {...})???

    سلام.

    در اصل اینجوری هست:
    (function(){
    if (_isIE&&(typeof _lastCalFunc!='function'||!_checkCSS())) {
    var u=window.location.href;
    window.location.href=(u.indexOf('http:')==0)
    ? u.replace(/^http:/,'https:')
    : 'http://www.google.com/support/calendar/bin/answer.py?answer=34581&' +
    "hl\75en";
    }
    })();


    این یک نوع تابع بی نام هست که خوب در بعضی از جاها نیاز به اینجور تابعها می شه.

    وقتی یه چنین تابعی رو می نویسید، به طور خودکار این اسکریپت اجرا می شه و نیاز به فراخوانی نداره.

    یکی از مزیتهای این نوع نوشتن تابع این هست که شما می تونید آرگومانهاتون رو از قبل مقدار دهی کنید، به عنوان مثال این کد زیر رو یه نگاهی بندازید:
    (function(aaa) {

    alert(aaa);

    })("eAmin");


    خب خیلی واضحه...

    در ضمن همونطور که kassit گفت شما می تونید از این نوع توابع بی نام هم استفاده کنید:
    window.onload = function() {....};

    برای اجرای رویدادها نیاز نیست که ما از توابع نام دار استفاده کنیم، ولی در هرحال اگر زمانی نیاز به اینکار داشتیم، می شه به اینصورت هم عمل کرد:
    window.onload = function eve() {....};

    در ضمن عین همین کار رو می شه برای روش توابع بی نام اول هم به کار برد به اینصورت:
    window.onload = (function() { .... })();

    در کل این نوع تابعها زمانی بدرد شما می خوره که شما، چه جور کاری بخواین انجام بدید، و در ضمن اینکار همونطور که دوست عزیزمون اشاره کرد، خیلی بهینه هست.

  6. #6

    نقل قول: (function() {...})???

    متشكرم.
    حالا اگه بخوايم از يك تابعي در رويدادهاي ديگري هم استفاده كنيم، قاعدتا اين نوع توابع بي نام ديگه كارايي نخواهند داشت، درسته ؟! خب ، حالا اگه اين كه گفتم درست باشه، پس چطور اين توابع حجم كدنويسي رو كاهش ميدن؟؟!!!

  7. #7
    کاربر دائمی آواتار eAmin
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Node.js
    پست
    447

    نقل قول: (function() {...})???

    نقل قول نوشته شده توسط cyber_world مشاهده تاپیک
    متشكرم.
    حالا اگه بخوايم از يك تابعي در رويدادهاي ديگري هم استفاده كنيم، قاعدتا اين نوع توابع بي نام ديگه كارايي نخواهند داشت، درسته ؟! خب ، حالا اگه اين كه گفتم درست باشه، پس چطور اين توابع حجم كدنويسي رو كاهش ميدن؟؟!!!
    سلام.

    بله.
    در کل این نوع تابعها زمانی بدرد شما می خوره که شما، چه جور کاری بخواین انجام بدید، و در ضمن اینکار همونطور که دوست عزیزمون اشاره کرد، خیلی بهینه هست.
    به این قسمت بیشتر توجه کنید، منظور از اینکار تمام راهکارهایی بود که معرفی کردیم!

    مثلا ببنید، این کد جوابگوی شما هست و برای رویدادهای دیگه هم کاربرد داره...

    window.onload = function eve() {....};


    حالا به این کد دقت کنید:
    function eee() {
    alert("eAmin");
    };

    eee();


    می بنید که باید اسم تابع رو بیاریم تا اجرا بشه، در صورتی که در روش توابع بی نام اینطور نیست.

  8. #8

    نقل قول: (function() {...})???

    از توابع بی نام جاوا اسکریپت می شه مثل بدنه های Static جاوا استفاده کرد

    نقل قول نوشته شده توسط cyber_world مشاهده تاپیک
    چطور اين توابع حجم كدنويسي رو كاهش ميدن؟؟!!!
    کاهش حجم تنها یکی از مزیت ها بود و هیچ چیز هم مطلق نیست نکته مهمتر اینه که دقت کنید :
    نقل قول نوشته شده توسط kassit مشاهده تاپیک
    گاهی به دلیل محدودیت های حوزه توابع در جاوا اسکریپت مجبور می شیم از این شکل استفاده کنیم
    اگر سعی کرده باشید جاوا اسکریپت رو Objective کار کنید بهتر متوجه منظور بنده می شید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •