【发布时间】:2015-07-29 02:02:17
【问题描述】:
我正在阅读BemTv 的代码。然后我看到了奇怪的 Javascript 代码,如下所示。
//n = {} , r = [5,1]
! function e(t, n, r) {
console.log(t)
function i(s, a) {
if (!n[s]) {
if (!t[s]) {
var c = "function" == typeof require && require;
console.log(require);
if (!a && c) return c(s, !0);
if (o) return o(s, !0);
throw new Error("Cannot find module '" + s + "'")
}
var u = n[s] = {
exports: {}
};
t[s][0].call(u.exports, function(e) {
var n = t[s][1][e];
return i(n ? n : e)
}, u, u.exports, e, t, n, r)
}
return n[s].exports
}
for (var o = "function" == typeof require && require, s = 0; s < r.length; s++) i(r[s]);
return i
}({
1: [function(e, t) {
"use strict";
t.exports = e("./src/main")
}, {
"./src/main": 46
}],
2: [function() {}, {}],
3: [function(e, t) {
...........
来源:http://cdn.clappr.io/bemtv/latest/p2phls.min.js
我的问题是:
代码行上的“数字”是什么意思?似乎结果索引并按索引返回函数对象。这样对吗?
作者为什么要这样写代码?这种编码约定有什么好处吗?
【问题讨论】:
-
这就是我们所说的缩小/压缩的javascript代码
-
这是一个以文字对象为参数的函数的立即调用。
-
没有人从头开始编写这样的代码(如果是这样的话,这将是一种可怕的做法,因为这样完全无法维护)。我可能是用更正常的变量名编写的,然后通过某种最小化程序将变量名简化为单字母名称。
标签: javascript