(大厂面试题)使用第一性原理推导—JS中代码是怎么运行的
前言
自从接触“第一性原理”,这个词在网上被吹得神乎其神。可是它到底是什么?我还没认真考究过。直到今天,通过浏览各位大佬的博文,对第一性原理有了点自己的理解。今天就和大家分享以下两点:
- 我对“第一性原理”的理解
- 从第一性原理的角度聊一聊JS中代码是怎么运行的
什么是第一性原理
当我看到下面马斯克这段话的完整译文,才终于把握到了“第一性原理”的实质,这令人膜拜的“第一性原理”,不就是“解耦合(decoupling)”吗?
-
要搞清楚这个概念,我们不妨试想,我们作为开发人员,希望改进一款开源软件产品的功能,你会怎么做?
你会打开一个新的空白源代码文件,从头开始,一行行的写代码吗?
基本上不会。那你会怎么做呢?
你会读现有软件的源代码,把新的功能实现补充或更新到对应的位置,提交合并请求
在这个过程中,我们都是把前人做的东西作为基础层,而后再在这个层次上,去叠加新的内容。
-
如果大家还没有理解,我们不妨再思考一个问题:为什么现在数据科学这么火热?Python、R和机器学习框架为何这么受到欢迎?甚至让很多非IT人士也在乐此不疲地渴望学习、应用它们?
因为有许许多多的开发者,已经为你写好了实现数据科学工作的各项基本功能。相关的软件包已有成千上 万,而且每天还在不停快速涌现。你根本不需要了解哪些功能究竟是如何实现出来的,只要会搜软件、查文档,直接“拿来主义”调用就能实现酷炫繁复的功能,方便得令人发指。
-
现在,大家再试想一下:如果之前的前提都不成立了呢?假设你目前的工作做所依赖的基础层级存在问题呢?
这就比如“品牌假货”的存在,大家都痛恨假货,但是原本品牌的存在,就会减低大家识别商品质量的成本。如果一个案例中,两种事物同时出现,总会被我们脑补为必然的关联,于是就耦合在一起了。你不难感受到,耦合的结果是非常不利于创新的。而所谓的“第一性原理”,即是一种“解耦合”的思维方式
如何使用“第一性原理”思考-JS中代码是怎么运行的
- 由第一性原理,可推出一下结论和问题
- 代码一定是逐行运行的
- 分为编译阶段和执行阶段,先后顺序
- 编译阶段发生了什么?
- 执行阶段执行了什么?
- 代码运行时,变量是如何查找的?
showName()//函数的执行