问题
- 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的区别
- all 和 apply 的功能相同,区别在于传参的方式不一样.apply的第二个参数是数组或类数组.
bind 和 call/apply 有一个很重要的区别,一个函数被 call/apply 的时候,会直接调用,但是 bind 会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this.
(3) 常用的数组方法(至少7个)
(4) 字符串方法(至少5个)
(5) 闭包是什么, 闭包的应用场景有哪些, 使用闭包要注意什么
闭包定义:
闭包形成的原因:
当某个函数的作用域链还引用着其他函数的活动对象时,就会形成闭包。
闭包的应用场景:
封装私有变量
- 模仿块级作用域 (ES5 中没有块级作用域)
-
使用闭包注意事项:
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题
- 闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。
参考答案:
https://www.yuque.com/qianduanhuge/he93t4/dobdgb
https://blog.csdn.net/weixin_45151960/article/details/104832916/