سلام این کد بصورت مفهومی چکاری انجام میده؟
!function (t, e) { // alert("function (t, e)"); alert(e); "use strict"; t = t || "docReady", e = e || window; var i = [], n = !1, o = !1; function a() { alert("a()"); if (!n) { n = !0; for (var t = 0; t < i.length; t++) i[t].fn.call(window, i[t].ctx); i = [] } } function r() { alert("r()"); "complete" === document.readyState && a() } e[t] = function (t, e) { alert("function (t, e)"); if ("function" != typeof t) throw new TypeError("callback for docReady(fn) must be a function"); n ? setTimeout(function () { t(e) }, 1) : (i.push({ fn: t, ctx: e }), "complete" === document.readyState || !document.attachEvent && "interactive" === document.readyState ? setTimeout(a, 1) : o || (document.addEventListener ? (document.addEventListener("DOMContentLoaded", a, !1), window.addEventListener("load", a, !1)) : (document.attachEvent("onreadystatechange", r), window.attachEvent("onload", a)), o = !0)) } }("docReady", window)
دوسوالی که دارم اینه، اون علامت تعجب اول تعریف تابع کارش چیه و دوم اینکه ("docReady", window) که آخر تابع نوشته شده کارش چیه؟ قبل از عدد یک، علامت تعجب آمده یعنی چی؟
سلام خدمت شما دوست عزیز
علامت ! قبل از یک function ، اون رو به function expression تبدیل میکنه
حالت دوم این ساختار بدین صورت هستش :
(function(){})();
علامت ! باعث میشه که expression مقدار true رو برگردونه
مقدار docready که در آخر نوشته شده برای این هستش که دستورات شما پس از اینکه صفحه به صورت کامل load شد ، اجرا بشن
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)