面试题: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: 返回整体(没一个匹配到的都返回)
javascriptlet 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的区别
javascriptsome ==》 如果有一项匹配则返回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