由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus本文标题:前端基础进阶(八):深入详解函数的柯里化
本文链接:https://www.haomeiwen.com/subject/sairwttx.html
网友评论
return array.map(func);
}
function _filter(func, array) {
return array.filter(func);
}
波同学,上述关于这两个例子是否出错,因为封装的createCurry的参数传递格式是从右到左,但是关于这两个函数的例子,参数传递的方式则是从左到右。
function check(targetString, reg) {
return reg.test(targetString);
}
check(/^1[34578]\d{9}$/, '14900000088');
check(/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/, 'test@163.com');
var _args = [...arguments]
var _add = function () {
_args.push(...arguments)
return _add
}
_add.toString=function () {
return _args.reduce(function (a,b) {
return a+b
})
}
return _add
}
var find20 = _find(function(item, i) {
if (typeof item === 20) {
return i;
}
})
find20([1, 2, 3, 30, 20, 100]); // 4
你这里小错误好像不少 比如这里 if (typeof item === 20)
还有这里明明是打印出 [20],怎么会是4呢? find20([1, 2, 3, 30, 20, 100]); // 4
var checkEmail = _check(/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/);
checkPhone('183888888');
checkEmail('xxxxx@test.com');
它们一起出现 会有错误
var checkEmail = createCurry(check)(/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/);
console.log(checkPhone('15940316823'))
console.log(checkEmail('176940099@qq.com'))
这样才对
console.log(add(1, 2, 3, 4, 5)); // f 15 返回值为function类型
console.log(add(1, 2, 3, 4, 5) + 0); // 15 返回值为number
// 实际开发中并不建议直接给Array扩展新的方法
// 只是用这种方式演示能够更加清晰一点
Array.prototype.merge = function(chars) {
return this.join(chars);
}
var string = arr.merge('-')
console.log(string); // 1-2-3-4-5
想问一下,这个和直接用join方法没什么区别吧?
function add(){
// 第一次执行时,定义一个数组专门用来存储所有参书
var _args = [].slice.call(arguments);
// 在内部声明一个函数,利用闭包的特性保存_args并收集所有参数值
var _adder = function(){
[].push.apply(_args, [].slice.call(arguments));
return _adder;
}
// 利用隐式转换的特性,当最后执行时隐式转换,并计算最终的值返回
_adder.toString = function(){
return _args.reduce(function(a,b){
return a+b;
})
}
return _adder;
}
另外感谢一下楼主,真的是好文章~
Object.prototype.bind = function(context) {
var _this = this;
var args = [].slice.call(arguments, 1);
return function() {
return _this.apply(context, args.concat([].slice.call(arguments)))
}
}
function add(){
var _arg = [].slice.call(arguments);
var adder = function(){
var _adder = function(){
[].push.apply(_arg,[].slice.call(arguments));
return _adder;
};
_adder.toString = function(){
return _arg.reduce(function(addUp,current){
return addUp + current;
});
};
return _adder;
};
return adder();// 波老师看这里
}