jQuery、JavaScript 中变量和函数的 1 个字母名称
Posted
技术标签:
【中文标题】jQuery、JavaScript 中变量和函数的 1 个字母名称【英文标题】:1-letter names for variables and functions in jQuery, JavaScript 【发布时间】:2010-04-27 16:35:32 【问题描述】:我在查看 Twitter 的静态脚本时注意到所有只有 1 个字符长的变量和函数,它们为什么以及如何做到这一点?跟性能有关系吗?如果是这样,他们为什么不给他们网站上的所有元素这些短名称,可能是 2 个字符而不是 1 个字符,以避免任何冲突。
例子:
(function (A)
A.fn.isScreenNameField = function ()
return this.each(function ()
var M = A(this);
var F = A("#signup_username_url");
var E = A("#screen_name_info");
var D = A("#avail_screenname_check_indicator");
var O;
var C;
var I;
var N = M.val();
var G = N;
var H = N != "";
var Q = /[a-zA-Z0-9_]/;
function K()
if (H)
F.html(M.val())
function L()
M.trigger("show-info");
E.hide();
D.show()
function B()
E.show();
D.hide()
function P()
G = O;
jQuery.ajax(
type: "GET",
url: "/users/username_available",
data:
username: O
,
dataType: "json",
success: function (R)
if (C)
var S = R.msg;
if (R.valid)
M.trigger("is-valid");
F.removeClass("invalid").addClass("valid")
else
M.trigger("is-invalid", R.msg);
F.addClass("invalid").removeClass("valid")
,
beforeSend: null,
complete: function ()
clearTimeout(twttr.timeouts.availabilityTimeout);
B()
)
function J(R)
O = M.val();
clearTimeout(twttr.timeouts.availabilityTimeout);
C = O.match(Q);
if (!C)
G = O;
B();
return
if (O == G)
return
L();
twttr.timeouts.availabilityTimeout = setTimeout(P, 2000)
M.isSignupFormField(
validateWith: function (R)
if (isBlank(R))
return _("Please enter a user name")
else
P()
,
allowInput: Q
);
M.keyup(function (R)
if (jQuery.inArray(R.keyCode, [16, 17, 18, 20, 27, 33, 34, 35, 37, 38, 39, 40, 144]) == -1)
if (M.val() != "")
H = true
else
M.trigger("show-info")
K();
J()
);
M.bind("value-changed", P);
M.bind("custom-validate", P)
)P
)
【问题讨论】:
【参考方案1】:此脚本已“缩小”,这是一种用较短名称替换变量的自动化技术,无需更改功能。例如,请参阅JSMin。目标是在将脚本发送到客户端时减少下载时间和带宽。
【讨论】:
我认为 Crockford 将这种特殊技术称为“混淆”。 JSMin 不会更改变量名,因为 Crockford 不喜欢混淆,因为他认为这很可能导致错误 好点。 YUI Compressor 既缩小又“混淆”。【参考方案2】:他们通过http://developer.yahoo.com/yui/compressor/ 之类的方式运行脚本,以减少它们的大小,从而减少加载时间。
这一切都是为了减少网站加载时间。 近年来,这个话题已经成为一个新领域,尤其是由于史蒂夫·斯托德斯的演讲:http://stevesouders.com/
【讨论】:
【参考方案3】:javascript 是客户端,因此您必须加载脚本。我认为,要下载的文本越少意味着性能越好。
【讨论】:
【参考方案4】:许多 javascript 项目通过“缩小器”运行其代码以使代码更小。这可以缩短浏览器下载库的时间。大多数项目还提供非缩小版本供开发人员阅读:
这里的例子: http://docs.jquery.com/Downloading_jQuery#Current_Release
【讨论】:
【参考方案5】:他们这样做的原因可能有很多,举一个常见的原因:
随着很多人使用 twitter,减少脚本的文件大小。
【讨论】:
以上是关于jQuery、JavaScript 中变量和函数的 1 个字母名称的主要内容,如果未能解决你的问题,请参考以下文章
JQuery 插件,Javascript - 如何仅为 JQuery 插件全局变量或 json 对象创建并在函数级别更改此(变量、对象)