You're never really done for, as long as you‘ve got a good story and someone to tell it to.

JS常见面试题

如何让事件先冒泡后捕获

在DOM标准事件模型中,是先捕获后冒泡。但是如果要实现先冒泡后捕获的效果,对于同一个事件,监听捕获和冒泡,分别对应相应的处理函数,监听到捕获事件,先暂缓执行,直到冒泡事件被捕获后再执行捕获之间

关于js动画和css3动画的差异性你了解吗?

css3动画:css3之后添加了transform动画计算函数,所以实现动画更为简单方便,并且transform矩阵是C++级的计算,所以速度会快很多。但是动画控制上不是特别灵活,部分动画无法实现(比如轮播图,视差滚动都需要js去参与)并且兼容性也存在一定问题。

js动画:一般可以使用requestAnimationFrame去实现,js动画相对css3动画来说,控制力更强一些,可以单帧的控制变换,同时可以兼容到IE6版本的浏览器,并且功能非常强大,但是它编码较为繁琐,并且运算预渲染性能都不如css3动画。

所以,综合考虑,简单的交互动画就用css3实现,控制比较复杂、比较繁琐的交互动画可以交由js实现。


请解释事件代理 (event delegation)。


请解释 JavaScript 中 this 是如何工作的。


请解释原型继承 (prototypal inheritance) 的原理。


你怎么看 AMD vs. CommonJS?


请解释为什么接下来这段代码不是 IIFE (立即调用的函数表达式):function foo(){ }();,要做哪些改动使它变成 IIFE?


描述以下变量的区别:null,undefined 或 undeclared?该如何检测它们?


什么是闭包 (closure),如何使用它,为什么要使用它?


请举出一个匿名函数的典型用例?


你是如何组织自己的代码?是使用模块模式,还是使用经典继承的方法?


# 面试  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×