Web培训
400-996-5531
今天小编要跟大家分享的文章是关于Web前端面试题JS的相关知识。在之前的文章中小编也为大家分享过一些相关面试题,如果你想参加Web前面面试,正在做面试准备,就来看一看小编今天为大家准备的文章吧!
一、for...in 和 for...of的区别
1. for...of 是ES6新引入的特性,修复了ES5引入的for...in的不足
2. for...in 循环出的是key,for...of循环出的是value
3. for...of不能循环普通的对象,需要通过和Object.keys()搭配使用
4. 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of
二、new一个对象,这个过程中发生了什么
var obj = new Object("name","sansan");
1. 创建一个新对象,如:var obj = {};
2. 新对象的_proto_属性指向构造函数的原型对象。
3. 将构造函数的作用域赋值给新对象。(也所以this对象指向新对象)
4. 执行构造函数内部的代码,将属性添加给obj中的this对象。
5. 返回新对象obj。
三、js的防抖和节流是什么
· 防抖: 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
使用场景:
1. 给按钮加函数防抖防止表单多次提交。
2. 对于输入框连续输入进行AJAX验证时,用函数防抖能有效减少请求次数。
简单的防抖(debounce)代码:
function debounce(fn, wait) { var timeout = null; return function () { if (timeout !== null) clearTimeout(timeout) timeout = setTimeout(fn, wait) } } // 处理函数 function handle() { console.log(Math.random()) } //滚动事件 window.addEventListener('scroll', debounce(handle, 2000));
· 节流: 就是指连续触发事件但是在 n 秒中只执行一次函数。节流会稀释函数的执行频率。
function throttle(func, delay) { var prev = Date.now(); return function () { var context = this; var args = arguments; var now = Date.now(); if (now - prev >= delay) { func.apply(context, args); prev = Date.now(); } } } function handle() { console.log(Math.random()); } window.addEventListener('scroll', throttle(handle, 2000));
区别:
函数节流不管事件触发有多频繁,都会保证在规定时间内一定会执行一次真正的事件处理函数,而函数防抖只是在最后一次事件后才触发一次函数。 比如在页面的无限加载场景下,我们需要用户在滚动页面时,每隔一段时间发一次 Ajax 请求,而不是在用户停下滚动页面操作时才去请求数据。这样的场景,就适合用节流技术来实现。
以上就是小编今天为大家分享的关于Web前端面试题汇总之JS篇(三)关于JS相关面试题的文章,希望本篇文章能够对正准备参加Web前端面试的小伙伴们有所帮助。想要了解更多Web前端面试相关知识记得关注达内Web培训官网,小编将继续为大家推荐相关面试题!最后祝愿小伙伴们能够面试成功,顺利找到工作!
【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved