问题

  • 1. “==”和”===”有什么不同
  • 2. call, apply, 和bind的区别
  • 3. 常用的数组方法(至少7个)
  • 4. 字符串方法(至少5个)
  • 5. 闭包是什么, 闭包的应用场景有哪些, 使用闭包要注意什么
  • 6. cookie、localStorage 、sessionStorage的区别
  • 7. 原型和原型链
  • 8. ajax是什么
  • 9. 解释jsonp的原理,以及为什么不是真正的ajax
  • 10. 什么是跨域?跨域有哪些解决方案?
  • 11. 基本数据类型有哪些?引用数据类型有哪些?基本数据类型和引用数据类型有什么区别
  • 12. 什么是工厂模式,有什么优缺点
  • 13. 说出以下http响应状态码的含义200、 301、 302、 304、 400、 401、 403、 404、 405、 500
  • 14. get请求和post请求的区别
  • 15. 有以下数组, 请把重复的成员去掉, 并进行升序排列

var list = [1,2,4,1,2,20,30,41,20];

  • 16. 说说html5新特性(至少5个)
  • 17. 什么是内存泄漏,什么情况容易产生内存泄漏
  • 18. 说出js的五种继承方式及其优缺点
  • 19. 解释下JavaScript中this是如何工作的(this的指向)
  • 20. 如何阻止冒泡? 如何阻止默认事件?

参考答案:

(1) “==”和”===”有什么不同

答案:前者会自动转换类型,再判断是否相等
后者不会自动类型转换,直接去比较

(2) call, apply, 和bind的区别

  1. all 和 apply 的功能相同,区别在于传参的方式不一样.apply的第二个参数是数组或类数组.
  2. bind 和 call/apply 有一个很重要的区别,一个函数被 call/apply 的时候,会直接调用,但是 bind 会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this.

    (3) 常用的数组方法(至少7个)

    (4) 字符串方法(至少5个)

    (5) 闭包是什么, 闭包的应用场景有哪些, 使用闭包要注意什么

    闭包定义:

    闭包就是一个能够读取其他函数内部变量的函数。

    闭包形成的原因:

    当某个函数的作用域链还引用着其他函数的活动对象时,就会形成闭包。

    闭包的应用场景:
  3. 封装私有变量

  4. 模仿块级作用域 (ES5 中没有块级作用域)
  5. 实现 JS 的模块

    使用闭包注意事项:
  6. 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题

  7. 闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。


参考答案:
https://www.yuque.com/qianduanhuge/he93t4/dobdgb
https://blog.csdn.net/weixin_45151960/article/details/104832916/