ES6面试题

面试题:var、let、const区别

var、let、const 共同点都是可以声明变量的

区别一:
var 具有变量提升的机制
let和const没有变量提升的机制
区别二:
var 可以多次声明同一个变量
let和const不可以多次声明同一个变量
区别三:
var、let声明变量的
const声明常量

var和let声明的变量可以再次赋值,但是const不可以再次赋值了。
区别四:
var声明的变量没有自身作用域
let和const声明的变量有自身的作用域

面试题:作用域考题

考题一:let和const没有变量提升性
console.log( str );//undefined
var str = '你好';

console.log( 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 obj = {
a:1
}
obj.a = 11111;
console.log( obj )

const arr = ['a','b','c'];
arr[0]= 'aaaaa';
console.log( arr );

面试题:将下列对象进行合并

方式一:Object.assign

const a = {a:1,b:4};
const b = {b:2,c:3};

let obj1 = Object.assign(a,b);
console.log( obj1 );

方式二:…

let obj2 = {...a,...b};
console.log( obj2 );

方式三:自己封装方法

function extend( target,  source ){
for(var key in source){
target[key] = source[key];
}
return target;
}
console.log( extend(a,b) );

面试题:箭头函数和普通函数有什么区别?

1. this指向的问题
箭头函数中的this只在箭头函数定义时就决定的,而且不可修改的(call、apply、bind)
****箭头函数的this指向定义时候、外层第一个普通函数的this
2. 箭头函数不能new(不能当作构造函数)
3. 箭头函数prototype
4. 箭头函数arguments

面试题:Promise有几种状态

有三种状态:
pending(进行中)
fulfilled(已成功)
rejected(已失败)

面试题:find和filter的区别

区别一:返回的内容不同
filter 返回是新数组
find 返回具体的内容
区别二:
find :匹配到第一个即返回
filter : 返回整体(没一个匹配到的都返回)

面试题:some和every的区别

some  ==》 如果有一项匹配则返回true
every ==》 全部匹配才会返回true