ES6面试题

发布于:2025-06-10 ⋅ 阅读:(19) ⋅ 点赞:(0)
面试题:var、let、const区别
var、1et、const 共问点都是慰蜒声明变重的
​
区别一:
    var具有变量提升的机制
    let和const没有变量提升的机制
    
区别二:
    var可以多次声明同一个变量
    let和const不可以多次声明同一个变量
    
区别三:
    var、let声明变量的
    const声明常量
    var和1et声明的变量可以再次赋值,但是const不可以再次赋值了。
    
区别四:
    var声明的变量没有自身作用域
    let和const声明的变量有自身的作用域
​

面试题:作用域考题
考题一:let和const没有变量提升性
​
console.log( str ); // undefined
var str = '你好';
console.1og(num); // 报错
let num = 10;
​
考题二:
​
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();
考题三:可以修改
​
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}​
方法一:Object.assign
let obj1 = Object.assign(a,b);
console.log( obj1 ); // {a:1,b:2,c:3}
​
方法二:ES6
let obj2 = {...a, ...b};
console.log( obj2 ); // {a:1,b:2,c:3}
方法三:自封装
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: 返回整体(没一个匹配到的都返回)
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的区别
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