- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
ES6前端面试题及答案(贴近实战版)
1.let/const和var有啥区别?实际开发里你更倾向用哪个?
答:核心区别在3点:
①作用域:var是函数级作用域,let/const是块级作用域({}里定义的变量只在{}内有效);
②变量提升:var会“提升”到函数顶部(哪怕没声明就用,只会undefined不会报错),let/const有“暂时性死区”(声明前用会直接报错);
③重复声明:var允许重复声明(后面的会覆盖前面),let/const不允许;
另外const声明后不能改值(但如果是对象/数组,内部属性可以改,比如constobj={};obj.name=a是合法的)。
实际开发优先用const(只要变量不用改,比如存接口返回的固定数据、DOM元素),需要改的变量用let,基本不用var——避免作用域混乱和重复声明的坑。
举个例子:循环绑定点击事件,用var会导致所有按钮点了都拿最后一个值,用let就正常:
//不好的写法(var)
for(vari=0;i3;i++){
document.querySelectorAll(button)[i].onclick=()=alert(i);//点任何按钮都弹3
}
//好的写法(let)
for(leti=0;i3;i++){
document.querySelectorAll(button)[i].onclick=()=alert(i);//分别弹0、1、2
}
2.箭头函数和普通函数不一样的地方?哪些场景不能用箭头函数?
答:最关键的是this指向,其他还有3个区别:
①this绑定:箭头函数没有自己的this,它的this是“继承外层作用域的this”;普通函数的this看调用方式(谁调用就指向谁,比如obj.fn()指向obj,直接fn()指向window/undefined);
②没有arguments:普通函数里能拿arguments(实参列表),箭头函数没有,要拿多参数得用剩余参数(...args);
③不能当构造函数:箭头函数不能new(会报错),也没有prototype属性。
不能用箭头函数的场景:
对象方法:比如constobj={fn:()={console.log(this)}},obj.fn()里的this会指向window(严格模式下是undefined),不是obj;
构造函数:没法new,自然不能用来创建实例;
需要arguments的场景:比如写一个求和函数,要拿所有实参,箭头函数得用...args替代。
3.Promise是干嘛的?它有哪些状态?then和catch怎么用?
答:主要用来解决“回调地狱”(比如多层ajax嵌套,代码越写越靠里),是ES6异步编程的核心方案。
Promise有3种状态:
pending:初始状态(刚创建时);
fulfilled:成功状态(调用resolve()后);
rejected:失败状态(调用reject()后);
状态一旦变了就不能再改(比如从pending到fulfilled,就再也变不成rejected)。
then和catch的用法:
then:处理成功的结果,参数是resolve传的值;
catch:处理失败的错误,参数是reject传的值;
支持链式调用:then里返回新的Promise,就能继续跟then/catch,避免回调嵌套。
举个模拟接口请求的例子:
//模拟请求用户数据
functiongetUserData(){
returnnewPromise((resolve,reject)={
setTimeout(()={
constsuccess=true;//模拟成功/失败
if(success){
resolve({name:张三,age:20});//成功传数据
}else{
reject(newError(请求失败));//失败传错误
}
},1000);
});
}
//调用
getUserData()
.then(data={
console.log(用户数据:,data);//成功时执行
returndata.age;//返回值会作为下一个then的参数
您可能关注的文档
最近下载
- 建筑工程危险源识别及预防措施.doc VIP
- 团餐的工作流程.pptx VIP
- 华能汶上西曼克400KWP分布式光伏项目EPC总承包工程技术规范书.pdf VIP
- 二类医疗器械经营质量管理制度.docx VIP
- 超高压气井井口除砂器及现场应用.pptx VIP
- 2023年专升本考试:专升本《政治》历年真题汇编(共184题).doc VIP
- 汇川INOVANCE MD290系列通用变频器综合手册.PDF VIP
- 第6课 从小爱科学 第2课时(教学课件)2025统编版道德与法治三年级上册.pptx
- 2025年江苏省职业院校技能大赛中职组(法律实务)考试题库(含答案).doc VIP
- ISO9001质量管理体系基础培训-适合新人培训.ppt
文档评论(0)