ES6常见用法

ES6, 全称 ECMAScript 6.0.

一.var、let、const之间的区别

let 用来声明变量,类似于变量,但是所声明的变量,只在let命令所在的代码块内有效
需要注意的地方:

1.不存在变量提升,未声明直接报错

2.暂时性死区

3.for循环具有两个作用域,外面的变量和里面的变量互不干扰

const 用来声明一个只读的常量,一旦声明,常量的值就不可以改变了,而且声明的时候必须赋值

var声明变量可以重复声明,而let不可以重复声明
var是不受限于块级的,而let是受限于块级
var会与window相映射(会挂一个属性),而let不与window相映射
var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错
const声明之后必须赋值,否则会报错
const定义不可变的量,改变了就会报错
const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错

二.箭头函数有哪些特性

(1)用了箭头函数,this就不是指向window,而是父级(指向是可变的)

(2)不能够使用arguments对象

(3)不能用作构造函数,这就是说不能够使用new命令,否则会抛出一个错误

(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数

三.ES6的模板字符串有哪些新特性?

基本的字符串格式化。
将表达式嵌入字符串中进行拼接。
用${}来界定在ES5时我们通过反斜杠()来做多行字符串或者字符串一行行拼接。
ES6反引号(``)就能解决类模板字符串的功能

四.结构赋值

// 两个变量的值的交换
let a = 1;let b = 2;
[a,b] = [b,a];

五. Set、Map

应用场景Set用于数据重组,Map用于数据储存

var arr=[1,2,3,1,2]

var newArr=[...new Set(arr)]

六.对promise的理解

Promise用来解决异步回调问题,由于js是单线程的,很多异步操作都是依靠回调方法实现的,这种做法在逻辑比较复杂的回调嵌套中会相当复杂;也叫做回调地狱;promise用来将这种繁杂的做法简化,让程序更具备可读性,可维护性;

promise内部有三种状态,pedding,fulfilled,rejected;pedding表示程序正在执行但未得到结果,即异步操作没有执行完毕,fulfilled表示程序执行完毕,且执行成功,rejected表示执行完毕但失败;这里的成功和失败都是逻辑意义上的;并非是要报错。

其实,promise和回调函数一样,都是要解决数据的传递和消息发送问题,promise中的then一般对应成功后的数据处理,catch一般对应失败后的数据处理。Promise状态一旦确定,就不会再次发生改变

七.对async/await的理解

async…await是基于promise的generator语法糖,它用来等待promise的执行结果,常规函数使用await没有效果;

async修饰的函数内部return不会得到预期的结果,会得到一个promise对象;

await等待的promise结果是resolve状态的内容,await 可以阻塞后面代码的执行,reject状态的内容需要使用try…catch获取,

await关键字必须要出现在async修饰的函数中,否则报错。

八.JavaScript中的数据类型(5+1+1)

基本类型(单类型):除Object。 String、Number、boolean、null、undefined。存储在栈(stack);

引用类型:object。里面包含的 function、Array、Date。存储在堆(heap)中;

ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。

谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。(但是很多人不把这个做为一个类型)。

九.对象的一些方法

Object.assign() 浅拷贝:
Object.keys(obj):获取obj的key名称并储存为一个数组,返回此数组

var obj = [1,2,3]
var obj1 = {
  name: '张三',
  age: 17,
  action: {
    123: '123',
    456: '456'
  }
}
console.log(Object.keys(obj));   // ['0', '1', '2']
console.log(Object.keys(obj1));  //  ['name', 'age', 'action']

Object.values(obj):获取obj的value名称并储存为一个数组,返回此数组

let obj = {
    foo : "bar",
    baz : 20
};
console.log(Object.values(obj));  // ["bar", 20]

Object.entries(obj) 获取obj的键值储存为一个二维数组,返回此二维数组

var obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj));  // [ ['foo', 'bar'], ['baz', 42] ]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值