编程语言
首页 > 编程语言> > 我觉得吧,这么学JavaScript,你才能通

我觉得吧,这么学JavaScript,你才能通

作者:互联网

1、工作原因,经常需要给团队内部做培训。于是,有的同学就跑过来问我,你准备讲啥啊?Vue?Node.js?React?Flutter?NPM?我笑着说,这些都不讲,整个过程中,就只算是提到这些名词,大概也不超过五次。

2、你应该能想象到那位同学的表情,大概率和你现在一样,要么觉得我在装,要么是真懵圈了。于是,你肯定会再追问,老周,那你不讲这些,从用户角度,你让我学什么?

3、好问题啊!学什么呢?我记得在豌豆荚的时候,有参与一些招聘的工作。老实说,作为架构师,招聘工作通常不是在第一轮,大概会是到第二、三轮的时候,才会轮到我上场。也就是说,我需要面试的,大抵都是其他“面试官”认为“这家伙还有点料”的。

4、有一次,我的一个面试结束得比较快,在内部的 HR 系统中填写评论的时候,正经才写了四个字,便被其他面试官打断了,他嚷嚷着,几乎快要被整个公司都听到了,说:“爱民老师,人家十几年的一线开发,大型系统都做过那么多,经验很丰富的!你怎么这么点评呢?”

5、嗯,我在 HR 系统中写评论,起头里的四个字是:水平一般。

6、我想了想,停下写评论,给这个面试官聊聊开头这四个字。我说,我其实不太常用这种措辞来评论候选人,但这个也算是例外了。为什么呢?因为这个人真的是能力很强,下手很快,做的产品和项目也多,经验非常丰富,但是他确实就是水平一般。

7、我去,什么叫“水平一般”呢?

8、emmmm,因为他学的东西,别人也都学;会的东西,别人也都会;他强的东西,别人一样也强。即使别人今天不如他学得多、会得多,又或者不比他强多少,但是只要花点时间、下点功夫,也就一样儿也不会比他差。他十几年的一线开发,把自己做成了熟手、熟练工,东西会得再多,技巧再熟练,也不过是卖油翁的“但手熟尔”。

9、我在面试里面,确实问了他几个偏向核心的问题,他也确实知道,很清晰、很准确。但再进一步问原理时,他却是一无所知。所以,我又引导、设问,说:“如果现在让你来考虑这个问题,你会从哪儿入手呢?”那位候选人想了好几个招数,中规中矩,然而无一可用。

10、这就是关键所在。

11、“核心原理”不是一些招数技法,不是拿来多练多用就行了的。而是说你要悟,你要在事上琢磨。这时候你理解了吧,我所谓的“一般”,不是指能力一般,而是指你眼界一般、思想一般,对你面前这个事物的理解程度,也是一般。

12、拿 JavaScript 举个例子吧,不然你不服。

13、JavaScript 是脚本代码,在引擎层面看来,首先就是一段文本。在性质上,装载 a.js 执行与 eval(’…’) 执行并没有区别,它们的执行对象都被理解为一个“字符串”,也就是字符串这一概念本身所表示的、所谓的“字符序列”。

14、在字符序列这个层面上,最简单和最经济的处理逻辑是正向遍历,这也是为什么“语句解析器”的开发者总是希望“语言的设计者”能让他们“一次性地、不需要回归地”解析代码的原因。

在前端领域混了这几年,总结了一套前端学习的精讲视频和学习路线,如果有对前端开发感兴趣的伙伴,不管你是想转行,或是大学生,还有工作中想提升自己能力的web前端党,欢迎大家的加入我的前端开发交流群:603985993 希望大家诚心交流!,与企业需求同步。好友都在里面学习交流,每天都会有大牛定时讲解前端技术!也可以关注我的微信公众号:【前端留学生】 每天更新最新技术文章干货。

15、回归(也就是查看之前“被 parser 过的代码”)就意味着解析器需要暂存旧数据,无法将解析器做得足够简洁,进而无法将解析器放在小存储的环境中。根本上来说,JavaScript 解析引擎是“逐字符”地处理代码文本的。

16、JavaScript 从“逐字符处理”得到的引擎可以理解的对象,称为记号(Tokens)。一个记号是没有语义的,记号既可以是语言能识别的,也可以是语言不能识别的。唯有把这二者同时纳入语言范畴,那么这个语言才能识别所谓的“语法错误”。

17、你看,这样再理解,你是不是就顺很多了?

18、再比如,引用(References)是静态语言与引擎之间的桥梁,它是 ECMAScript 规范中最大的一个挑战,你理解了“规范层面的引用(References)”,也就基本上理解了 ECMAScript 规范整个的叙述框架。这个框架的核心在于——ECMAScript 的目的是描述“引擎如何实现”,而不是“描述语言是什么”。

18、规范层面中的引用与引擎的核心设计有关。

19、在 JavaScript 语言层面,它希望引擎是一个执行器,更具体的描述是:引擎的核心是一个表达式计算的、连续的执行过程。表达式计算是整个 JavaScript 语言中最核心的预设,一旦超出这个预设,JavaScript 语言的结构体系就崩溃了。所以,本质上来说,JavaScript 的所谓“语句能执行”也是一个或一组表达式计算过程,而且所有的计算都必须能描述成一个基本的模式:opCode -> opData,也就是用操作符去处理操作数。

20、这个相信你也明白了,这回到了我们计算理论最初的原点,是我们学习计算机这门课程最初的那个设定:计算实现的就是“计算求解”的过程。它的另一个公式化的表达就是著名的“算法 + 数据结构 = 程序”。

21、这个话题接下去还能聊很久,我前面先卖个关子。如果你感兴趣,下周三晚上,可以来我的直播间,我和你聊聊怎么学习 JavaScript 这门语言。我吹个牛,我想和你聊聊,怎么学 JS,你才能“通”。如果你信的话。

标签:解析器,语言,前端,JavaScript,觉得,引擎,才能,理解
来源: https://blog.csdn.net/BOM485480/article/details/118306455