سلام این کد بصورت مفهومی چکاری انجام میده؟
!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 شد ، اجرا بشن
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)