function asArray(quasiArray, start) {
var result = [];
for (var i = (start || 0); i < quasiArray.length; i++)
result.push(quasiArray[i]);
return result;
}
function partial(func) {
var fixedArgs = asArray(arguments, 1);
return function(){
return func.apply(null, fixedArgs.concat(asArray(arguments)));
};
}
function compose(func1, func2) {
return function() {
return func1(func2.apply(null, arguments));
};
}
var isUndefined = partial(op["==="], undefined);
var isDefined = compose(op["!"], isUndefined);
show(isDefined(Math.PI));
show(isDefined(Math.PIE));
Tại sao có thể không phải là chức năng soạn chỉ cần trả:Tôi đang đọc Eloquent Javascript và tôi hơi bối rối bởi ví dụ chức năng một phần này. Xin vui lòng giúp giải thích
func1(func2);
và cung cấp cho các đầu ra thích hợp. Tôi nghĩ rằng một phần chức năng được lưu trữ trong biến isUndefined đã trả về func.apply (null, [cố định, đối số])
var op = {
"+": function(a, b){return a + b;},
"==": function(a, b){return a == b;},
"===": function(a, b){return a === b;},
"!": function(a){return !a;}
/* and so on */
};
'op' được khai báo ở đâu? Bạn có thể thêm nó vào? –
Rất tiếc, xin lỗi – Shaan