前端面试题之ES6

含泪总结前端面试题之ES6


前言

这里是关于ES6的面试题,后面慢慢更新


提示:以下是本篇文章正文内容,下面案例可供参考

1.ES6是什么?

ES6是JS语言的一个标准,就是平常的格式怎么写怎么用。

2.let const

letconst
禁止重复声明禁止重复声明
不存在变量提升不存在变量提升
暂时性死区暂时性死区
声明的变量只在代码块内有效声明一个常量,变量地址不可修改
声明后立即赋值,否则会报错

​const保证不变的值是是地址不变,如果是对象数组里面的数据是可以变的。

​ 就是说 如果

const arr =[],obj={}
arr.push({obj})//这样是可以的
arr = new Array[]就是不可以的 因为这样会改变地址
对象也一样

3.函数默认值

​ 就是

function fun (x,y ='111'){
	//这里的y就有一个默认值

}

4.解构赋值

let [x,y,z] = [1,2,3]
let {username,pasword} = {username:"11",pasword:'1111'}
如果右边没有就是undefined
 let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
    baz // "aaa"
    foo // error: foo is not defined
        //上面代码中,foo是匹配的模式,baz才是变量。真正被赋值的是变量baz,而不是模式foo。

5.扩展运算符

功能把数组或者类数组对象展开成一系列用逗号隔开的值
用途可以进行数组,对象的合并
使用方式…[1,2,3]

6.rest运算符

功能就是把这些参数合并成一个数组
注意rest只能是最后一个参数
使用方式…加很多参数

7.模板字符串

​ 外面有反引号 里面大括号包括的数组{AAA}

8.箭头函数

特点 :

  • 不绑定this值:是从作用域链的上一层继承this
  • 不可以当做构造函数
  • 没有arguments类数组(可以用rest参数代替)

​应用:是一个匿名函数

()=> aaa  相当于 ()=>{return aaa}
aa=>{} 相当于(aaa)=>{}
()=>{}

//这个例子
var Person = {
    'age': 18,
    'sayHello': ()=>{
        console.log(this.age);
      }
};
var age = 20;
Person.sayHello();  // 20
//作用域是在一个函数内部,然后这个箭头函数外面没有函数所以就是全局,所以就是全局的A会输出20 注意作用域都是对于函数所说

9.数组的扩展之一 类数组转换成数组

​arguments 不是数组,不继承Array.prototype对象上的属性和方法,但是有length属性,

把类数组转换成数组

Array.prototype.slice.call(arguments)

Array.from() 将类数组变成真正的数组

Array.of() 将一组值变成数组

10.数组的扩展之原型方法

1.​find()

查找数组中符合条件的元素,如果有多个符合条件的就返回第一个

let arr = Array.of(1, 2, 3, 4);
console.log(arr.find(item => item > 2)); // 3

2.findIndex()

查找数组中符合条件的元素的下标,如果有多个就返回第一个。

查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。

let arr = Array.of(1, 2, 1, 3); // 参数1:回调函数 // 参数2(可选):指定回调函数中的 this 值 
console.log(arr.findIndex(item => item == 2)); // 1  
// 数组空位处理为 undefined 
console.log([, 1].findIndex(n => true)); //0

3.copyWithin()

将一定范围索引的数组元素修改为此数组另一指定范围索引的元素。

// 参数1:被修改的起始索引
// 参数2:被用来覆盖的数据的起始索引
// 参数3(可选):被用来覆盖的数据的结束索引,默认为数组末尾
console.log([1, 2, 3, 4].copyWithin(0,2,4)); // [3, 4, 3, 4]
 
// 参数1为负数表示倒数
console.log([1, 2, 3, 4].copyWithin(-2, 0)); // [1, 2, 1, 2]
 
console.log([1, 2, ,4].copyWithin(0, 2, 4)); // [, 4, , 4]

4.fill()

将一定范围索引的数组元素内容填充为单个指定的值。

let arr = Array.of(1, 2, 3, 4); // 参数1:用来填充的值 // 参数2:被填充的起始索引 // 参数3(可选):被填充的结束索引,默认为数组末尾 console.log(arr.fill(0,1,2)); // [1, 0, 3, 4]

5.entries()

遍历键值对。

for(let [key, value] of ['a', 'b'].entries()){
    console.log(key, value);
}
// 0 "a"
// 1 "b"
 
// 不使用 for... of 循环
let entries = ['a', 'b'].entries();
console.log(entries.next().value); // [0, "a"]
console.log(entries.next().value); // [1, "b"]
 
// 数组含空位
console.log([...[,'a'].entries()]); // [[0, undefined], [1, "a"]]

6.keys()

遍历键名。

for(let key of ['a', 'b'].keys()){    console.log(key);}// 0// 1 // 数组含空位console.log([...[,'a'].keys()]); // [0, 1]

7.values()

遍历键值。

8.includes()

数组是否包含指定值。

9.flat()

嵌套数组转一维数组

console.log([1 ,[2, 3]].flat()); // [1, 2, 3] // 指定转换的嵌套层数
console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]] // 不管嵌套多少层
console.log([1, [2, [3, [4, 5]]]].flat(Infinity)); // [1, 2, 3, 4, 5] // 自动跳过空位
console.log([1, [2, , 3]].flat());<p> // [1, 2, 3]

11.对象的扩展

对象简洁表示

 //例1
    const foo = 'bar';
    const baz = { foo };
    baz // {foo: "bar"}

    // 等同于
    const baz = { foo: foo };

    //例2
    const o = {
      method() {
        return "Hello!";
      }
    };
    // 等同于
    const o = {
      method: function () {
        return "Hello!";
      }
    };



    //例3
    let birth = '2000/01/01';

    const Person = {
      name: '张三',
      //等同于birth: birth
      birth,
      // 等同于hello: function ()...
      hello() {
        console.log('我的名字是', this.name);
      }
    };

属性名

obj.foo = true
obj['a'+'bc'] =123

let propKey = 'foo'
let obj = {
	[propKey]:true,
	['a'+'bc']:123
}

静态方法

Object.assign(target, source_1, ···)

用于将源对象的所有可枚举属性复制到目标对象中。

let target = {a: 1};
let object2 = {b: 2};
let object3 = {c: 3};
Object.assign(target,object2,object3);  
// 第一个参数是目标对象,后面的参数是源对象
target;  // {a: 1, b: 2, c: 3

Object.is(value1, value2)

用来比较两个值是否严格相等,与(===)基本类似。

12.symbol

这里就要说到数据类型了

基本数据类型 number string boolean undefined null

引用数据类型就是Object(Array FUnction Date Error)

这个symbol就是一个独一无二的值

var S1 = Symbol()

13.for in遍历

获取键名

14.for of 遍历

获取属性值

15.好多的遍历方法

forEach()用于遍历数组

arr.forEach((item,index)=>{

})

for in

是es5,遍历对象数组把key值遍历出来他会把原型属性遍历出来

可以用hasOwnPropery判断是否是自己的属性

for of

是es6的 用于遍历数组内的元素

Object.keys()

返回一个数组,数组的元素是输入对象的所有键名的集合

16.Set

是一个构造函数,通过new生成Set,没有重复的值

17.Map

类似对象,是键值对的集合,但是键的范围不限于字符串,对象也可以是键

18.promise

19.async await

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值