2020前端面试(十)- ES6相关

点这里,欢迎关注

1.简单讲一讲ES6的一些新特性:

  1. let、const变量,块级作用域

    • ES5只有全局作用域和函数作用域,块级作用域的好处是不再需要立即执行的函数表达式,循环体中的闭包不再有问题。
  2. 解构赋值

  3. 各种数据类型扩展的方法:

    • 数组:扩展运算符…

    • 如字符串方面的模板字符串

    • 函数:

      • 默认参数
      • rest参数:用于代替arguments对象,是一个真正的数组
      • 箭头函数
    • 对象方面属性的简洁表达方式

  4. 引入了新的基本数据类型Symbol

  5. 引入了新的数据结构Set和Map

  6. 引入了promise,generator,async/await,更强大的异步解决方案

  7. 引入了Class类的概念,通过Class可以更好的实现面向对象编程

  8. 引入了ES6模块的概念,便于模块化编程。其模块功能主要有两个命令构成,export和import,export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能

2.let const var的区别 :

varlet , const
作用范围没有块级作用域的概念只能在块级作用域使用
变量提升存在不存在
是否允许重新赋值可以let可以,const不可以
在全局执行环境下声明的变量是否会被挂载到window对象上不会
是否允许重新定义可以不可以
特性声明的const变量必须赋初值

3.箭头函数:

(1)箭头函数与普通函数的区别:

没有绑定this,在箭头函数中使用this时,是沿着作用域链向上查找,返回最近的this。

不能通过this调用

没有arguments对象

(2)箭头函数获取arguments对象:

使用…rest参数:

function fn(...params) {
    console.log(params);//[ 1, 2, 3, 4 ]
    console.log(arguments);//[Arguments] { '0': 1, '1': 2, '2': 3, '3': 4 }
}
fn(1,2,3,4)

注意:返回的是一个真实的数组,ES5中的arguments返回的是伪数组,其实是一个对象。

arguments可以通过ES6中的Array.from转换为真正的数组。

4.简单介绍一下symbol:

Symbol是es6引入的一种新的基本数据类型。

特性之一就是可以用于创建唯一的标识,可以避免为对象添加属性时的命名冲突。

特性之二是通过Symbol添加的属性具有一定的隐秘性,无法通过for…in和Obejct.keys访问。但是可以被Obejct.getOwnPropertySymbols(obj)访问到,该方法返回的是一个数组

5.对于js临时死区的理解:

ES6 明确规定,在块级作用域中声明的let,const变量,会形成封闭的作用域。凡是在声明之前就使用这些变量,就会报错。这种语法被称为暂时性死区(temporal dead zone ,简称 TDZ)

var temp = 123;
if(true){
    console.log(temp);//ReferenceError: Cannot access 'temp' before initialization
    let temp;
}

//“暂时性死区”也意味着typeof不再是一个百分之百安全的操作。
typeof x; // ReferenceError: x is not defined
let x;

ES6规定暂时性死区和let,const不出现变量提升的目的是为了减少运行时的错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值