ES6面试题

面试题:var、let、const区别
复制代码
var、1et、const 共问点都是慰蜒声明变重的
​
区别一:
    var具有变量提升的机制
    let和const没有变量提升的机制
    
区别二:
    var可以多次声明同一个变量
    let和const不可以多次声明同一个变量
    
区别三:
    var、let声明变量的
    const声明常量
    var和1et声明的变量可以再次赋值,但是const不可以再次赋值了。
    
区别四:
    var声明的变量没有自身作用域
    let和const声明的变量有自身的作用域
​
面试题:作用域考题
javascript 复制代码
考题一:let和const没有变量提升性
​
console.log( str ); // undefined
var str = '你好';
console.1og(num); // 报错
let num = 10;
​
javascript 复制代码
考题二:
​
function demo(){
    var n = 2;
    if( true ){
        var n = 1;
    }
    console.log( n ); // 1
}
demo();
​
function demo(){
    let n = 2;
    if( true ){
        let n = 1;
    }
    console.log( n ); // 2
}
demo();
javascript 复制代码
考题三:可以修改
​
const abjl = {
    a:1
}
obj.a = 11111;
console.log(obj)  // {a:11111}
​
const arr = ['a','b','c'];
arr[0]= 'aaaaa';
console.log( arr ); // ['aaaaa','b','c']
面试题:将下列对象进行合并
复制代码
 /*
用你知道的方法合并下列对象,尽量写多个答案
const a={a:1,b:4}
const b={b:2,c:3}
*/
const a = {a:1,b:4}
const b = {b:2,c:3}​
javascript 复制代码
方法一:Object.assign
let obj1 = Object.assign(a,b);
console.log( obj1 ); // {a:1,b:2,c:3}
​
javascript 复制代码
方法二:ES6
let obj2 = {...a, ...b};
console.log( obj2 ); // {a:1,b:2,c:3}
javascript 复制代码
方法三:自封装
function extend( target, source ){
    for(var key in source){
        console.log(key)  // b , c
        target[key] = source[key];
    }
    return target;
}
​
console.log( extend(a,b)); // {a: 1, b: 2, c: 3}
面试题:箭头函数和普通函数有什么区别?
复制代码
1. this指向的问题
    箭头函数中的this是在箭头函数定义时就决定的,而且不可修改的(call、apply、bind)、
    ****箭头函数的this指向定义时候、外层第一个普通函数的this
2. 箭头函数不能new(不能当作构造函数)
3. 箭头函数没有 prototype 原型
4. 箭头函数没有 arguments 对象
面试题:Promise有几种状态及优缺点
复制代码
Promise有三种状态: Pending (等待中)、 Fulfilled (已成功)、 Rejected (已失败。Promise的状态只能从Pending变为Fulfilled或Rejected,且一旦改变,状态就不会再次改变。这种特性使得Promise非常适合表示异步操作的结
​
Promise状态变化过程
    Pendin:初始状态,既没有被Fulfilled(成功),也没有被Rejected(失败)。在这个状态下,Promise的then方法和catch方法都不会被执行。
    Fulfille:异步操作成功完成后的状态。这时,then方法中的回调函数会被执行,并将异步操作的结果作为参数传递给回调函数。
    Rejecte:异步操作失败后的状态。这时,catch方法中的回调函数会被执行,并将异步操作的错误原因作为参数传递给回调函数。
​
Promise的优点和缺点
优点:
    链式调:通过.then()串联异步操作,解决多层嵌套回调的“回调地狱”问题,结构更扁平。
    统一错误处:.catch()可集中捕获链中任意环节的异常,避免分散的错误处理逻辑。
    并行控:Promise.all()和Promise.race()等方法支持批量管理异步任务,提升执行效
​
缺点:
    无法取:Promise执行后无法终止,可能导致资源浪费。
    静默失:未添加.catch()或错误未被捕获时,错误会“吞没”,不易调试。
    无进度反:无法像事件监听那样实时获取操作进度(例如文件上传百分比)
面试题:find和filter的区别
复制代码
区别一:返回的内容不同
    filter: 返回是新数组
    find: 返回具体的内容
    
区别二:
    find: 匹配到第一个即返回
    filter: 返回整体(没一个匹配到的都返回)
javascript 复制代码
let arr = [123,13,13,1,31,1,2,4];
console.log(arr.filter(val => {return val > 2}))  // [123,13,13,31,4]
console.log(arr.find(val => {return val > 2 }))  // 123
面试题:some和every的区别
javascript 复制代码
some  ==》  如果有一项匹配则返回true
every ==》  全部匹配才会返回true
​
​
var arr = [1,4,2,10,6];
var brr = arr.some(val=>{
    return val > 4;
})
console.log( brr ); // true
​
​
var crr = arr.every(val=>{
    return val > 4;
})
console.log( crr ); // false
相关推荐
wuxinyan12324 分钟前
Java面试题033:一文深入了解MySQL(5)
java·数据库·mysql·面试
笑衬人心。1 小时前
HTTPS详解:原理 + 加解密过程 + 面试问答
java·网络协议·http·面试·https
伍哥的传说1 小时前
鸿蒙系统(HarmonyOS)应用开发之手势锁屏密码锁(PatternLock)
前端·华为·前端框架·harmonyos·鸿蒙
yugi9878381 小时前
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
前端
欧阳有财1 小时前
[java八股文][Mysql面试篇]日志
java·mysql·面试
浪裡遊1 小时前
Sass详解:功能特性、常用方法与最佳实践
开发语言·前端·javascript·css·vue.js·rust·sass
旧曲重听12 小时前
最快实现的前端灰度方案
前端·程序人生·状态模式
默默coding的程序猿2 小时前
3.前端和后端参数不一致,后端接不到数据的解决方案
java·前端·spring·ssm·springboot·idea·springcloud
夏梦春蝉2 小时前
ES6从入门到精通:常用知识点
前端·javascript·es6
归于尽3 小时前
useEffect玩转React Hooks生命周期
前端·react.js