自学几个月前端,为什么感觉什么都没学到??
这种现象在很多的初学者和自学前端的同学中是比较的常见的。
因为自学走的弯路是比较的多的,会踩很多的坑,学习的过程中是比较的迷茫的。
最重要的是,在学习的过程中,不知道每个部分该学哪些知识点,学到什么程度才算好,学了能做什么。
很多自学的朋友往往都是自己去找资料学习的,资料上有的或许就学到了,资料上没有的或许就没有学到。
这就会给人一个错误的信息就是,我把资料上的学完了,估计也-就差不多的了。
但是真的是这样的吗?非也,因为很多人找的资料就是很基础的。学完了也就是掌握一点基础的东西。分享给你一份前端分析路线,你可以参考。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。
所以学习编程一定要注重实践操作,练习敲代码的时间一定要多余看视频的时间。
Add(1,2,…)(3)(4)
唔,还是有点难呀…没关系,再砍, 不要传入多个参数。
Add(1)(2)(3)
有…有…有那味了…这…这不就是柯里化吗…
有些小朋友可能没有听过,对于大朋友而言耳熟能详,融会贯通。
我们还是来介绍一下。
在《javascript高级程序设计》这本书中有如下介绍:
与函数绑定紧密相关的主题是函数柯里化,它用于创建已经设置好的一个或者多个参数的函数。函数柯里化的基本方法和函数绑定是一样的:使用一个闭包返回一个函数。两者的区别在于,当函数被调用时,返回的函数还需要设置一些传入的参数。
我们来写写看:
function Add(x) {
return function (y) {
return return functio (z) {
return x + y + z;
}
}
}
// 简洁写法
const Add = x => y => z => x+y+z;
执行一下
Add(1)(2)(3) // 6
是我们要的那味~
那么我们既然已经写出了这个形态,我们就一步一步反推。
这个时候千万别紧张,我们从最低级的形态出发,写出一个最基本的形态,能够有效地帮助我们建立自信心,吃下定心丸,按照这种方式,哪怕我们最终没有写出完美的结果,让面试官看到你思考解题的过程,也是一种加分。
好,接着说~
那我们接下来需要实现这个样子。
Add(1,2,…)(3)(4)
传入参数不止一个
我们知道,对于不确定参数个数,我们可以使用 arguments
这个对象来获取到所有的入参,但是 arguments
不是一个 Array
,但是我们可以使用 ES6 中的 Spread syntax (展开语法)去将他变成一个数组。表演继续。
function Add() {
const nums = […arguments];
return function() {
nums.push(…arguments);
return function() {
nums.push(…arguments);
return nums.reduce((a, b) => a + b);
}
}
}
nice!已经离我们最终的形态越来越近了。接下来是这个函数能够无限的进行调用。
Add(1,2,…)(3)(4)(…)
那么怎么样才能无限调用呢?没错,用递归。
function Add() {
const nums = […arguments];
function AddPro() {
nums.push(…arguments);
return AddPro;
}
return AddPro;
}
嗯,其实我们写到这里发现了… 由于是无限递归,我们没办法确定最后一次函数调用,因此我们需要最后显式调用一个结束的方法来打印出最后的数据。
很自然地,我们可以在 AddPro
添加一个方法 sumOf
来解决这个问题。
学弟就是卡在这里地方,被函数添加上一个方法搞懵了。你是否知道呢?
function Add() {
const nums = […arguments];
function AddPro() {
nums.push(…arguments);
return AddPro;
}
AddPro.sumOf = () => {
return nums.reduce((a, b) => a + b);
}
return AddPro;
}
自学几个月前端,为什么感觉什么都没学到??
这种现象在很多的初学者和自学前端的同学中是比较的常见的。
因为自学走的弯路是比较的多的,会踩很多的坑,学习的过程中是比较的迷茫的。
最重要的是,在学习的过程中,不知道每个部分该学哪些知识点,学到什么程度才算好,学了能做什么。
很多自学的朋友往往都是自己去找资料学习的,资料上有的或许就学到了,资料上没有的或许就没有学到。
这就会给人一个错误的信息就是,我把资料上的学完了,估计也-就差不多的了。
但是真的是这样的吗?非也,因为很多人找的资料就是很基础的。学完了也就是掌握一点基础的东西。分享给你一份前端分析路线,你可以参考。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。
所以学习编程一定要注重实践操作,练习敲代码的时间一定要多余看视频的时间。