面试失败总结

痛定思痛。我认为自己一个最大的优点就是能从每一次失败当中学习到东西,让失败变成一个有价值的事情,这样虽然失败其实也没有失败,因为从自身成长的角度而言,反而是收获了很多。能够和一线大佬进行两三个小时的’面试一对一辅导’,第一次面试在A家面到总监,这个成绩也还不算差。

不要靠天赋成功,也不要靠运气成功,要让每一次成功都是一个必然,要让每一个方面的成功都能成为可能。事情的成功,应该是合理的方法下的必然。

看似简单的js题目引出的词法分析

今天在牛客网做练习题遇到了一个很简单的问题,疏忽大意做错了。本来做错也不值得写博文,但是看了下评论,还是觉得有很多人的看法并不正确。

var bb = 1;
function fn(bb){
    bb=2;
    alert(bb);
}
fn(bb);
alert(bb);

弹出的结果是什么?多数人做的错误答案是2;2。认为这个题考察的是在函数内部如果不使用var声明的话实际上是创建了一个全局变量。

评论中出现了两种主要的原因分析,一是占70%的函数传递参数是按值传递派,二是20%的作用域链派。其余还有少许的各种各样看法。

当我反应过来的时候,很自然想到的是词法分析/AO分析。

第一步对参数相当于执行了var bb=undefined;bb=1,第二步是bb=2这一条,所以这个bb实际上还是局部变量!对于作用域链这个说法我想也是可以的,只是没有解释明白为什么局部有bb变量。

Eventloop机制和大量dom操作分时

本着多深入一点点的原则,今天看到了一个问题,是关于js如何实现精确计时,这个暂且不在这篇文章中讨论,想说的是在查阅资料的时候看到了一篇文章讨论了浏览器的运行机制。

文章提及了事件监听和setTimeout的定时器实际上是两个独立于js主线程的线程。这跟我之前看阮一峰的eventloop机制讲解的文章自己理解的内容有一点偏差。经过自己的思考,我认为阮一峰的博文有一定的问题,这个问题是出于其本身的错误还是没有明确细节使人产生了误解并不重要,重要的还是要确认自己的理解是否正确。

按照我目前的理解,这两个独立线程的说法是正确的,也就是说实际上setTimeout和事件监听机制确实可以说是实时根据判断条件捕获到了,真正出现延迟的是其回调函数!

由一道奇奇怪怪的js加法引发的

当当~当当!

{}+[]和[]+{}这个问题眼熟吗?

说实话第一眼看起来就像是什么老油条搜肠刮肚然后狡黠一笑写出来坑人的,仿佛是茴香豆的茴字有几种写法属于同一类的问题。

然而,本着通过奇奇怪怪问题学一点底层知识的想法,我还是看了下去。其中的原理还是有一定营养,从这一道题可以牵扯出js基本类型、valueOf、toString、通过Object.toString.call判断类型、包装类型、类型转换、原型链等一干知识,堪称大串联了。

文本溢出处理的正确姿势

在移动端自适应上,文本的溢出处理没出问题时不容易察觉,一旦出了问题却表现地很明显。当然,移动端对于文本的控制也要结合rem来达到各个平台统一的效果。

最近发现text-overflow的表现非常不可控(实际上是根本没学会),有时生效有时无效,为了彻底解决这个问题,查阅了一番资料,最终整理如下。

not found!