ES6查漏补缺

ES6查漏补缺

1. let 和const 命令

区别于var

  • 不存在变量提升
    在这里插入图片描述

  • let 是块级作用域,只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响
    在这里插入图片描述
    const命令同样适用

  • let不允许在相同作用域内,重复声明同一个变量
    在这里插入图片描述
    在这里插入图片描述

重点: let实际上为 JavaScript 新增了块级作用域,即外层代码块不受内层代码块的影响

  • 块级作用域内部,优先使用函数表达式
    在这里插入图片描述
  • const声明一个只读的常量。一旦声明,常量的值就不能改变;const一旦声明变量,就必须立即初始化,不能留到以后赋值,只声明不赋值,就会报错。

ES5 只有两种声明变量的方法:var命令和function命令。

ES6 除了添加let和const命令,另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有 6 种声明变量的方法。

  • var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。
    在这里插入图片描述

2. 数组的解构赋值

从数组和对象中提取值,对变量进行赋值,这被称为解构

  • 只要等号两边的模式相同,左边的变量就会被赋予对应的值
    在这里插入图片描述
  • 不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组
    在这里插入图片描述
  • 解构赋值允许指定默认值
    在这里插入图片描述
对象的解构赋值
  • 对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值
    在这里插入图片描述
  • 解构后重命名 XXX:XX
    在这里插入图片描述
  • 对象的解构也可以指定默认值
    在这里插入图片描述
  • 如果要将一个已经声明的变量用于解构赋值,必须非常小心
    在这里插入图片描述
    上面代码将整个解构赋值语句,放在一个圆括号里面,就可以正确执行
字符串的解构赋值
  • 字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象
    在这里插入图片描述

  • 类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值
    在这里插入图片描述

变量的解构赋值用途
  • 交换变量的值
    在这里插入图片描述

  • 从函数返回多个值
    在这里插入图片描述

  • 函数参数的定义,解构赋值可以方便地将一组参数与变量名对应起来
    在这里插入图片描述


3.模板字符串
`xxx ${变量}  xxxx` 

4. 字符串新增的方法
  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
    在这里插入图片描述
    这三个方法都支持第二个参数,表示开始搜索的位置
    在这里插入图片描述

使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

  • repeat方法返回一个新字符串,表示将原字符串重复n次
    在这里插入图片描述
  • replaceAll()方法,可以一次性替换所有匹配,返回一个新字符串,不会改变原字符串
    在这里插入图片描述
5. 数值的扩展
  • ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示
    在这里插入图片描述
    如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法
    在这里插入图片描述

  • 数值分隔符

数值使用下划线(_)作为分隔符,可以每三位添加一个分隔符,也可以每一位、每两位、每四位添加一个

在这里插入图片描述

不能放在数值的最前面(leading)或最后面(trailing)。
不能两个或两个以上的分隔符连在一起。
小数点的前后不能有分隔符。
科学计数法里面,表示指数的e或E前后不能有分隔符。

  • Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity
    在这里插入图片描述

  • Number.isNaN()用来检查一个值是否为NaN
    在这里插入图片描述

  • ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变
    在这里插入图片描述

  • ES6 在 Math 对象上新增了 17 个与数学相关的方法。所有这些方法都是静态方法,只能在 Math 对象上调用

Math.trunc方法用于去除一个数的小数部分,返回整数部分;对于非数值,Math.trunc内部使用Number方法将其先转为数值;对于空值和无法截取整数的值,返回NaN
在这里插入图片描述

Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值
在这里插入图片描述
参数为正数,返回+1;
参数为负数,返回-1;
参数为 0,返回0;
参数为-0,返回-0;
其他值,返回NaN。

  • ES2020 引入了一种新的数据类型 BigInt(大整数),来解决这个问题,这是 ECMAScript 的第八种数据类型。BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。

6. 函数的扩展
  • ES6 允许为函数的参数设置默认值,即直接写在参数定义的后
    在这里插入图片描述

注意点:
参数变量是默认声明的,所以不能用let或const再次声明,会报错
使用参数默认值时,函数不能有同名参数
有默认值的参数,写在最后

  • 函数的 length 属性

指定了默认值以后,函数的length属性,将返回没有指定默认值的参数个数。也就是说,指

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值