如何面试JS原理

先说说最近两件让我有点坐卧不安的事情。第一件,是前段时间我花了一点时间去读了一点 ES6 规范。对于第一次读规范的我是比较困难的,由于有不少术语及平时不常见的描述方式。通过几个知识点的阅读,我已经能读得比较顺畅,也掌握了规范层面的原理,我也颇有成就感。可是随后当我开始入坑 react-native 并写 demo 的时候,发生了很不爽的事情,就是我看不懂 demo 报的错误了。由于错误不是 JS 引发的错误,我忽然意识到 JS 在这种状况下变成了仅仅是一种 DSL,而我写了这么多年的 JS,看了规范原理在这个时候竟然都用不上了。前端

第二件事情是我看了道 JS 的题目: 用 for 循环给一系列 dom 元素注册 click 监听函数,每一个元素被点击后 alert 循环变量 i。问点击元素后的表现?有必定经验的工程师应该很快能反应过来,这题很常见: 点击全部元素都会 alert 出相同的值( i 最后取值 )。若是要 alert 递增的数字,那么最典型的处理方式是在注册监听函数这段代码外面加个当即执行的函数,把全局变量 i 赋值给闭包中的局部变量便可。那若是用 ES6 如何解决呢?只要用 let 去声明循环变量 i,就能不用闭包来完成咱们原有的意图。虽然我知道 let 建立的是局部变量,可是即便每次循环都是一个新建立的 i,那么也解释不通 let 声明的 i 会递增(明明每次循环都是一个新的 i )。而后去扒了规范,原来规范规定这种状况每次循环要把上一次 i 的值赋值给当次新建立的变量 i。那么问题来了,这种状况下并不能用已知的 let 是声明局部变量这个原理去推导出 for 循环的这种表现,只是规范这么规定了这种特殊状况下程序的表现。那其实规范原理的犄角旮旯里有太多的这些内容,咱们就都要去学习?对咱们平时编程有多大帮助?react

回到咱们的题目上来,咱们面试前端工程师 JS 原理的目的究竟是什么?从上面两件事情来看,我以为面试者对 JS 原理掌握的深度并不与工做有利度产生绝对的正相关。面试

咱们会看到不少面试题涉及到一些刁钻的原理,其实这并不适合来作第一轮的面试,由于作错了既不能证实面试者没有触类旁通的学习能力也不能证实面试者没有顺藤摸瓜解决问题的能力。仅仅能证实他没有看过这几个不经常使用的知识点。而咱们第一轮面试的应该是看面试者是否掌握了些通用的,容易踩坑的知识点。由于这直接影响到他写出来的代码的质量。若是基本知识点掌握了,那么咱们再去深刻的问问这些不太经常使用的知识点就能侧面的去看这我的是否有的专研精神。编程

直接上手就用刁钻的原理问题来面试的面试官可能不是想秀优越感,就是对如何考察面试者思路不清了。其实若是抛开面试这个问题,再想一想到底什么是前段工程师,咱们的着眼点是 JS,HTML,CSS?框架?原理?应该都不是,若是陷入了某种技术,那么就会发生我最一开始遇到的问题: 换一个环境原有的技术可能就失灵了。如何在具体的技术上再拔高一层我也有点困惑,若是之后有感悟我再来总结吧。react-native

最后我想说明下,此篇只是个人感悟,并且我不是反对对原理的专研,而是但愿不要为了学原理死抠原理。前端工程师

相关文章
相关标签/搜索