HLJ 发布于
2018-05-31 19:59:43

js面试题

什么是内存泄漏

  • 内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。

可能出现内存泄漏的原因

  • 1、 意外的全局变量
  • 2、 DOM元素清空时,还存在引用
  • 3、 闭包
  • 4、 遗忘的定时器

如何优化内存泄漏?

  • 1、 全局变量先声明在使用
  • 2、 避免过多使用闭包。
  • 3、 注意清除定时器和事件监听器。

js中数组合并的方法

  • 1、 concat关键字 arr.concat(arr2)
  • 2、 es6 展开运算符(…) […arr1, …arr2,······]
  • 3、 push() push(…arr)

合并对象的方法

  • Object.assign()

什么是作用域,什么是作用域链?

  • 1、规定变量和函数的可使用范围称为作用域
  • 2、查找变量或者函数时,需要从局部作用域到全局作用域依次查找,这些作用域的集合称作用域链。

JS如何实现异步编程(5种)?

  • 1、回调函数(callback) 优点:解决了同步的问题(只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。) 缺点:回调地狱,每个任务只能指定一个回调函数,不能 return.
  • 2、事件监听。这种思路是说异步任务的执行不取决于代码的顺序,而取决于某个事件是否发生。比如一个我们注册一个按钮的点击事件或者注册一个自定义事件,然后通过点击或者trigger的方式触发这个事件。
  • 3、Promise
  • 4、Generator
  • 5、生成器 async/await,是ES7提供的一种解决方案。

浏览器所用的内核

  • 1、IE:Trident内核
  • 2、Chrome:以前是webkit内核,现在是Blink内核
  • 3、Firefox:Gecko(/ˈɡekoʊ/)内核
  • 4、Safari:webkit内核
  • 5、Opera:最初使用的是presto内核,后来加入谷歌大军,从webkit内核又变成了Blink内核
  • 6、360,猎豹浏览器:IE+chrome双内核

已知ID的Input输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)

  • document.getElementById(ID).value;
    

什么是Ajax,它的优缺点

  • Ajax是异步JavaScript和XML,用于在Web页面中实现异步数据交互。
    优点:
  • 1、可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量
  • 2、避免用户不断刷新或者跳转页面,提高用户体验
    缺点:
  • 1、对搜索引擎不友好
  • 2、要实现ajax下的前后退功能成本较大
  • 3、可能造成请求数的增加
  • 4、跨域问题限制

JS中的深拷贝与浅拷贝的区别?

  • 1、深拷贝递归地复制新对象中的所有值或属性,而拷贝只复制引用。
  • 2、在深拷贝中,新对象中的更改不会影响原始对象,而在浅拷贝中,新对象中的更改,原始对象中也会跟着改。
  • 3、在深拷贝中,原始对象不与新对象共享相同的属性,而在浅拷贝中,它们具有相同的属性。
文章来源:http://lusongsong.com/info/post/10356.html
最后生成于 2023-06-18 18:28:39
此内容有帮助 ?
0