我正在审查我们网站上的一些代码,直到我找到这个代码
<script>
(function (a) {
_q = function () { return a; };
$ = function (f) { typeof f === 'function' && a.push(arguments); return $; };
jQuery = $.ready = $;
}([]));
</script>
然后是一堆插件,包括jQuery 我只是不知道它意味着什么,我想知道它是如何工作的,所以我将能够操纵代码。任何人都可以逐行解释代码吗?
修改
对不好的代码感到抱歉。我也在徘徊它的使用,这就是我在这里问的原因。无论如何,这是head标签内的整个代码。
<head>
<meta charset="utf-8">
@foreach (string domain in
ViewBag.Prefetches is string[] ? ViewBag.Prefetches : new string[] { })
{
@Html.Prefetch(domain)
}
<title>
@{@ViewBag.SiteName
if (ViewBag.Title != null)
{ @ViewBag.SiteDelimiter @ViewBag.Title }
}
</title>
<meta name="description" content="">
<meta name="author" content="">
<meta http-equiv="imagetoolbar" content="false">
<link href="@Url.ContentArea("~/css/global/normalize.css")" rel="stylesheet" />
@foreach (string stylesheet in
ViewBag.Stylesheets is string[] ? ViewBag.Stylesheets : new string[] { @"style.css" })
{
<link href="@Url.ContentArea("~/css/" + stylesheet)" rel="stylesheet" />
}
@RenderSection("CustomCss", required: false)
<link href="@Url.ContentArea("~/css/global/helpers.css")" rel="stylesheet" />
<link href="@Url.ContentArea("~/css/global/media.css")" rel="stylesheet" />
<script src="@Url.ContentArea("~/js/global/modernizr-2.5.3.min.js")"></script>
<script>
(function (a) {
_q = function () { return a; };
$ = function (f) { typeof f === 'function' && a.push(arguments); return $; };
jQuery = $.ready = $;
}([]));
</script>
@RenderSection("OverrideJs", required: false)
</head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="@Url.ContentArea("~/js/global/jquery-1.7.2.min.js")"><\/script>');</script>
@foreach (string script in
ViewBag.Scripts is string[] ? ViewBag.Scripts : new string[] { })
{
<script src="@script"></script>
}
<script>
Modernizr.load({
test: window.JSON,
nope: '@Url.Content("~/Scripts/Polyfills/json.polyfill.js")'
});
(function (i, s, q, l) {
for (q = window._q(), l = q.length; i < l;) {
$.apply(this, s.call(q[i++]));
}
}(0, Array.prototype.slice));
</script>
<!--[if lt IE 7 ]>
<script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js"></script>
<script>window.attachEvent("onload",function(){CFInstall.check({mode:"overlay"})})</script>
<![endif]-->
我无法提供链接,因为这些代码用于您必须登录的特定页面 无论如何,谢谢你的帮助。
答案 0 :(得分:1)
简短回答:如果加载了jQuery,它会记录
很长的回答:看起来它所做的就是添加一个变量“jQuery”(如果它已经加载),之后添加一个函数_q,它返回一个参数数组(这是一个存在于所有函数中的类似数组的变量'执行背景,谢谢FabrícioMatté)。据我所知,因为没有任何参数被发送到函数中,它所做的只是记录它被调用的范围。
看起来“jQuery”变量被进一步向下访问,如果没有设置它会加载jQuery。但我不认为它可以在那里被访问,因为我没有看到变量全局声明在任何地方。
它的用途是它首先尝试从Google的托管中加载jQuery。如果失败则在本地加载jQuery。