Fork me on GitHub

ES6【二】

解构赋值

ES6允许按照一定格式,从数组和对象中提取值,对变量进行赋值,这就被称为解构。

数组的解构赋值

  • 解构赋值可嵌套
1
var [a,b,c]=[1,2,3]
  • 不完全解构,在解构赋值中,赋值失败,变量的值变成undefined,不会抛出异常。
1
var [a,b,c]=[1,2]
  • 允许设定默认值 当新值为undefined时,不会覆盖默认值
1
var [a,b,c=3]=[1,2,4] //可被覆盖

对象的解构赋值

1
2
var [a,b,c]={"a":1,"b":2,"c":3}
//对象的解构赋值不会受到属性排序的影响,数组则会受影响。
  • 可被嵌套
1
var {a:{b}}={"a":{"b":1}}
  • 可以设定默认值
1
var {a,b=2}={"a":1}

字符串的解构赋值

1
var [a,b,c,d,e]="我是攻城狮";

解构赋值用途

  • 交换变量的值
1
2
3
var x=1;
var y=2;
[x,y]=[y,x]
  • 提取函数返回的多个值
1
2
3
4
function (){
return {"name":"张三","age":21}
}
var {name,age}=demo();
  • 定义函数参数
1
2
3
4
5
6
function (a,b,c){
console.log("name"+a);
console.log("age"+b);
console.log("sex"+c);
}
demo({a:"张三",b:"21",c:"man"})
  • 设定函数参数的默认值
1
2
3
4
function ({age=21}){
console.log("年龄"+age);
}
demo({})

小结

解构赋值是一种全新的变量赋值方式,主要可利用数组解构赋值和对象解构赋值,主要用途:交换变量值,提取函数返回值,函数参数定义,默认值设定等。

ES6字符串新特性

ES6给字符串带来了很多实用性的扩展:模板字符串,标签模板,repeat函数、includes函数,startsWith函数,endsWith函数,codePointAt函数,String.fromCodePoint函数,String.raw函数。

模板字符串

1
2
3
4
5
6
let name = "Jacky";
let occupation = "doctor";
let str = `He is ${name},he is a ${occupation}`;
//不再需要通过+,“”进行拼接了
let str = `write once ,
run anywhere`;

${ }中可以放任意的javascript表达式,如运算表达式,对象的属性,函数的调用。

repeat函数

repeat( )函数:将目标字符串重复N次,返回一个新的字符串,不影响目标字符串。

includes函数

判断字符串中是否含有指定的子字符串,返回true表示含有和false表示未含有。第二个参数选填,表示开始搜索的位置,从0开始。

startsWith函数

判断指定的子字符串是否出现在目标字符串的开头位置,第二个参数选填,表示开始搜索的位置。

endsWith函数

判断子字符串是否出现在目标字符串的尾部位置,第二个参数选填,表示针对前N个字符。

codePointAt函数与String.fromCodePoint函数

String.raw函数

返回字符串最原始的样貌,无视转义符的存在。

什么是Unicode编码

Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

ES6数值新特性

传统isNaN会将非数值转化为数值在判断,而Number. isNaN只对数值类型有效,其余类型一律返回false

1
2
console.log(isNaN('abc')); //true
console.log(Number.isNaN('abc')) //false

使用Number.isNaN是要注意,返回false时,不一定就是一个数值,有可能是一个非数值类型的参数。

Number.isFinite函数

用来检查一个数值是否非无穷。对,真就是假,假就是真。

1
2
3
console.log(Number.isFinite(1)); //true
console.log(Number.isFinite(Infinity)); //false
console.log(Number.isFinite('abc')); //false

注意:与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

1
2
3
4
Math.sign(3); //结果:1
Math.sign(-3); //结果:-1
Math.sign(0); //结果:0
Math.sign('abc'); //结果: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对象。

据说帅的人都赏给博主几块钱零花钱。