我试图从quojs了解这个缩小的代码。在代码中,e(缩小变量:不是我做!)在第3行定义。然后,在定义函数e的函数范围内,再次定义e。到底是怎么回事?是否在第3行定义,然后e.e在第6行定义?我试图感受javascript object model:但是在他们自己的定义范围内定义的东西肯定会让我失望!
(function() {
var e;
e = function() {
var e, t, n;
t = [];
e = function(t, r) {
var i;
if (!t) {
return n()
} else if (e.toType(t) === "function") {
return e(document).ready(t)
} else {
i = e.getDOMObject(t, r);
return n(i, t)
}
};
n = function(e, r) {
e = e || t;
e.__proto__ = n.prototype;
e.selector = r || "";
return e
};
e.extend = function(e) {
Array.prototype.slice.call(arguments, 1).forEach(function(t) {
var n, r;
r = [];
for (n in t) {
r.push(e[n] = t[n])
}
return r
});
return e
};
n.prototype = e.fn = {};
return e
}();
window.Quo = e;
"$$" in window || (window.$$ = e)
}).call(this);
答案 0 :(得分:2)
是否在第3行定义,然后e.e在第6行定义?
不,第4行的var e
声明它是函数的本地。所以这两个e
之间没有冲突。
答案 1 :(得分:1)
您有不同的范围,每个范围都有不同的e
。
简化您的代码,
var e = 'abc';
e; // 'abc'
function foo() {
var e = 123;
e; // 123
}
e; // 'abc'
答案 2 :(得分:0)
var e = function() {
var e = 1;
console.log(e); // prints a *number*
};
e();
console.log(e); // prints a *function*
由于功能范围,这些是不同的变量。