解构赋值
ES6允许按照一定格式,从数组和对象中提取值,对变量进行赋值,这就被称为解构。
数组的解构赋值
- 解构赋值可嵌套
|
|
- 不完全解构,在解构赋值中,赋值失败,变量的值变成undefined,不会抛出异常。
|
|
- 允许设定默认值 当新值为undefined时,不会覆盖默认值
|
|
对象的解构赋值
|
|
- 可被嵌套
|
|
- 可以设定默认值
|
|
字符串的解构赋值
|
|
解构赋值用途
- 交换变量的值
|
|
- 提取函数返回的多个值
|
|
- 定义函数参数
|
|
- 设定函数参数的默认值
|
|
小结
解构赋值是一种全新的变量赋值方式,主要可利用数组解构赋值和对象解构赋值,主要用途:交换变量值,提取函数返回值,函数参数定义,默认值设定等。
ES6字符串新特性
ES6给字符串带来了很多实用性的扩展:模板字符串,标签模板,repeat函数、includes函数,startsWith函数,endsWith函数,codePointAt函数,String.fromCodePoint函数,String.raw函数。
模板字符串
|
|
${ }中可以放任意的javascript表达式,如运算表达式,对象的属性,函数的调用。
repeat函数
repeat( )函数:将目标字符串重复N次,返回一个新的字符串,不影响目标字符串。
includes函数
判断字符串中是否含有指定的子字符串,返回true表示含有和false表示未含有。第二个参数选填,表示开始搜索的位置,从0开始。
startsWith函数
判断指定的子字符串是否出现在目标字符串的开头位置,第二个参数选填,表示开始搜索的位置。
endsWith函数
判断子字符串是否出现在目标字符串的尾部位置,第二个参数选填,表示针对前N个字符。
codePointAt函数与String.fromCodePoint函数
String.raw函数
返回字符串最原始的样貌,无视转义符的存在。
什么是Unicode编码
Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。
ES6数值新特性
传统isNaN会将非数值转化为数值在判断,而Number. isNaN只对数值类型有效,其余类型一律返回false
|
|
使用Number.isNaN是要注意,返回false时,不一定就是一个数值,有可能是一个非数值类型的参数。
Number.isFinite函数
用来检查一个数值是否非无穷。对,真就是假,假就是真。
|
|
注意:与Number.isNaN一样,Number.isFinite函数返回false的时候,参数不一定就是一个有穷的数值类型,也有可能是一个非数值类型的参数。
Number.parseInt函数
解析一个字符串,返回一个整数,作用无任何变化。
Number.parseFloat函数
解析一个字符串,返回一个浮点数,作用无任何变化。
Number.isInteger函数
用来判断是否是一个整数,这里要注意一点,若小数点后都是0的浮点数,返回都是true
极小常量【约等于0.00000000000000022204】用来计算误差,若误差小于这个数,表示误差可被接受。
安全整数
能够准确表示的整数范围在-2^53到2^53之间
ES6Math对象扩展
Math.trunc函数
用于去除一个数的小数部分,返回整数
Math.sign函数
用于判断一个数是整数,负数,还是0。非数值类型的参数返回NaN
|
|
Math.cbrt函数
用于计算一个数的立方根。
其他一些函数
Math.acosh(x) 返回 x 的反双曲余弦。
Math.asinh(x) 返回 x 的反双曲正弦。
Math.atanh(x) 返回 x 的反双曲正切。
Math.clz32(x) 返回 x 的 32 位二进制整数表示形式的前导 0 的个数。
Math.sinh(x) 返回x的双曲正弦。
Math.cosh(x) 返回 x 的双曲余弦。
Math.expm1(x) 返回 e?x - 1。
Math.fround(x) 返回 x 的单精度浮点数形式。
Math.hypot(…values) 返回所有参数的平方和的平方根。
Math.imul(x, y) 返回两个参数以 32 位整数形式相乘的结果。
Math.log1p(x) 返回 1 + x 的自然对数。
Math.log10(x) 返回以 10 为底的x的对数。
Math.log2(x) 返回以 2 为底的 x 的对数。
Math.tanh(x) 返回 x 的双曲正切。
小结
ES6对Number对象新增了isInteger函数、极小常量Number.EPSILON、安全整数。将window对象下的4个函数【Number.isNaN Number.isFinite Number.parseInt Number.isInteger】移植到了Number对象。