es6特性总结(一)

1.let、const

      es6之前只有全局作用域函数作用域,es6新增块级作用域。let、const 允许创建块级作用域。

      let关键词声明变量,特点:代码块内有效、不能重复声明、不存在变量提升

      const声明常量,其实 const 其实保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动。对于复杂类型(对象 object,数组 array,函数 function),这个「常量」并非一成不变的,如:

var a = 2;
{
  let a = 3;
  console.log(a); // 3
}
console.log(a); // 2


const ARR = [5,6];
ARR.push(7);
console.log(ARR); // [5,6,7]
ARR = 10; // TypeError

2. 数组和对象解构

    解构可以避免在对象赋值时产生中间变量

// 数组结构
let [a, b, c] = [1, 2, 3];  // a=1,b=2,c=3
let [a, [[b], c]] = [1, [[2], 3]];  // a=1,b=2,c=3
let [, , d] = [1, 2, 3];  // d = 3
let [e, ...n] =[1, 2, 3];   // e = 1, n = [2,3]
let [a = 1, b] = []; // a = 1, b = undefined
let [a, b, c, d, e] = 'hello';  // a='h'  b='e'  c='l'  d='l'  e='o'
// 当解构模式有匹配结果,且匹配结果是 undefined 时,会触发默认值作为返回结果。
let [a = 3, b = a] = [];     // a = 3, b = 3
let [a = 3, b = a] = [1];    // a = 1, b = 1
let [a = 3, b = a] = [1, 2]; // a = 1, b = 2

const str = '/foo/sec/thr';
const [, first] = str.split('/');
console.log(first);  // foo

// 对象结构
let {name, age} = {name: 'vae', age: 18};  // name='vae'  age = 18
let {p: [x, {  }] } = {p: ['hello', {y: 'world'}] };  // x = 'hello'
let obj = {p: [{y: 'world'}] };
let {p: [{ y }, x ] } = {p: [{y: 'world'}] };  // x=undefined  y='world'
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};  // a=10  b=20  rest={c:30,d:40}
let {a = 10, b = 5} = {a: 3};   // a=3  b=5
let {a: aa = 10, b: bb = 5} = {a: 3};  // aa=3  bb=5

//重命名(命名冲突时解决方法)
const name = 'jack';
const { name: newName } = { name: 'vae', age: 18 };
console.log(name);  // jack
console.log(newName);  // vae

3.模板字符串

${ ... } 用来渲染一个变量

支持换行

const name = 'tom';
const str = `hello, this is ${name} ------- ${1+3}`;  // str = 'hello, this is tom ------- 4'

带标签的模板字符串(可用于调整字符串内顺序)

const name = 'tom';
const gender = true;

function myFunTag(strings, name1, gender1) {
    console.log(strings, name1, gender1);  // ['hello es2015 ', ' is a ', '']   tom  true

    return strings[2] + name1 + strings[0] + gender1 + strings[1];  // 可以对字符串顺序进行调整;
}

const str = myFunTag`hello es2015 ${name} is a ${gender}`;
console.log(str);  // tomhello es2015 true is a 

4.字符串的扩展方法

  •          includes()    是否包含某个字符串
  •          startsWith()  是否以某个字符串开头
  •          endsWith()    是否以某个字符串结尾
  •          repeat(param)    将字符串重复指定次数返回
  •          padStart()    用 参数字符串 从头部(左侧)补全原字符串
  •          padEnd() 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: ES6中的Set和Map是两种新增的集合类型。Set是一种无重复值的集合,可以通过new Set()来创建。它具有add方法用于向集合中添加元素,has方法用于判断集合中是否存在某个元素,clear方法用于清空集合。Set也可以用于数组去重,通过new Set(\[...\])的方式将数组转换为Set,利用Set的特性去除重复值。\[1\] Map是一种键值对的集合,可以通过new Map()来创建。它具有set方法用于向集合中添加键值对,get方法用于获取指定键名对应的值,has方法用于判断集合中是否存在某个键名,clear方法用于清空集合。Map的键名可以是任意数据类型,包括引用值,但需要注意的是,引用值作为键名时,需要使用相同的引用地址才能获取到对应的值。\[2\] Set和Map都可以使用for...of循环或forEach方法进行遍历。在Set中,forEach的第二个参数是集合的元素,因为Set中不存在下标。而在Map中,forEach的第一个参数是键值对的值,第二个参数是键值对的键名。\[3\] 总结来说,Set和Map是ES6中新增的集合类型,Set用于存储无重复值的集合,Map用于存储键值对的集合。它们提供了一些方法来操作集合,如添加、获取、判断是否存在等。在使用时需要注意它们的特性和方法的使用方式。 #### 引用[.reference_title] - *1* *2* [ES6中的Map和Set详解](https://blog.csdn.net/m0_45093055/article/details/126430467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ES6中的set与map](https://blog.csdn.net/weixin_44247866/article/details/127561391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃肉的大熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值