[关闭]
@lesonky 2017-10-09T03:16:57.000000Z 字数 2183 阅读 884

天数前端JS面试题(无答案)

面试题


JS基础

es5相关

1.简述JavaScript有哪些数据类型(简单)

追问,ES6加入了一种新的基本数据类型,是什么,有什么用(难)

2.===== 有什么区别(简单)

3.nullundefined 的区别(简单)

4.[[1,2],[3,4],[5,6,7]] 扁平化处理(多种解法,中等)

追问:用一行代码实现,多种实现

5.callapply 的用法及区别(中等)

6.call,apply,bind的区别(中等)

7.简述闭包的概念(中等)

追问:
一下代码,控制台会输出什么,为什么?

  1. var a = 10;
  2. function b(){
  3. var a = 5;
  4. console.log(this.a)
  5. return function(){
  6. console.log(a)
  7. }
  8. }
  9. b()();

8.关于this指向的问题,下面的代码控制台会输出什么(难)

  1. var length = 10
  2. function fn(){
  3. console.log(this.length);
  4. }
  5. var obj = {
  6. length: 5,
  7. method: function(fn) {
  8. fn();
  9. arguments[0]();
  10. }
  11. }
  12. obj.method(fn);

9.立即执行函数的写法以及使用场景?(中等)

10.如何深度复制一个对象(难)

追问:
- 如何解决函数的复制(难)
- 如何解决原型链的复制(难)

11.将数组["8","13","7","5","4","21","1","6"]按照数字从小到大的顺序排列 (简单)

12.写一个得到费布拉切数列第N项的方法(难,循环,递归)

追问:
- 用递归实现(中等)
- 优化递归实现(尾递归,加分)
- 使用curry化将函数变得优雅一些(加分)

jQuery相关

1.简述jQuery对象与DOM对象的却别(简单)

2.简述window.onload与$(document).ready的区别(简单)

3.简述jQuery的事件代理机制以及使用场景(简单)

4.如何手动触发DOM事件(简单)

5.如果网页中已经使用$作为变量名,又要使用jQuery,如何避免变量名冲突(简单)

6.jQuery插件有哪些形式,如何创建一个jQuery插件(中等)

7.jQuery的ajax同步模式和异步模式有什么区别,如何设置(简单)

8.如何避免事件的超高频率触发(如滚动事件,键盘输入事件等)(中等)

ES6相关

1. ES6提供了新的变量声明方式(简单)

追问:
- 与var的区别(中等,细节继续追问)
- 临时死区的概念(中等)
- 对全局变量的影响(细节)

2. 箭头函数与普通函数的区别(中等)

追问:
- 箭头函数中this的指向
- 箭头函数中arguments是否可用

3.for...in...循环与for...of...循环的区别(难,细节)

4....操作有哪些用处(中等)

5.函数参数默认值的用法(难)

追问: 下面的代码,控制台依次输出什么?

  1. function a({a,b} = {a:1,b:2}){
  2. console.log(a);
  3. console.log(b);
  4. }
  5. function b({a=1,b=2}){
  6. console.log(a);
  7. console.log(b);
  8. }
  9. function c({a=1,b=2} = {a:1,b:2}){
  10. console.log(a);
  11. console.log(b);
  12. }
  13. a();
  14. a({a:2});
  15. a({a:2,b:3});
  16. b();
  17. b({a:2});
  18. b({a:2,b:3});
  19. c();
  20. c({a:2});
  21. c({a:2,b:3});

6.数组去重(使用es6的方式)(中等)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注