ES6笔记(一)
1.ES6是JavaScript规范,之所以不叫JavaScript,一是因为商标问题,java是SUN公司的商标,只有Netscape才能使用JavaScript这个名字,且JavaScript已经被Netscape公司注册为商标。二是想体现这门语言的制定者是ECMA,而不是Netscape.
2.ES6原意是指JavaScript5.1以后的下一代版本,泛指ES2015、ES2016、ES2017等等。
3.ES5变量提升,全局作用域、函数作用域,ES6暂时性死区,块级作用域
4.do表达式
let x = do {
let t = f();
t * t + 1;
}; x为整个块级作用域的返回值
5.顶层对象和global对象
6.解构赋值
7.字符串:中文,charPointAt(0,2,for...of), fromCodePoint, at, normailize(NFC,NFD), includes, startsWith, endsWith, repeat, padStart, padEnd, 模板字符串,标签模板,String.raw(),模板字符串的限制(转义字符)
8.正则的扩展:RegExp构造函数的参数(第二个有效),u修饰符(支持中文),y修饰符(同g,不同之处:后一次匹配从上一次匹配成功的下一个字符开始,属性:lastIndex,index,source,flags,sticky,RegExp.escape()(字符串转义),s修饰符(dotAll),后行断言,Unicode属性类。
9.数值的扩展:二进制(0b,0B),八进制(0o,0O),Number.isFinite(),Number.isNaN()(只能判断number类型),Number.parseInt(),Number.parseFloat(),Number.isInteger(),Number.EPSILON(极小数,用于浮点数计算精确度),Number.MAX_SAFE_INTEGER,N umber.MIN_SAFE_INTEGER, Number.isSafeInteger(), Math.trunc()(返回整数部分),Math.sign()(判断一个数是正数、负数还是0,返回值:+1,-1,+0,-0,NAN),Math.cbrt()(计算一个数的立方根),Math.clz32()(返回一个数的32位无符号整数形式有多少个前导0),Math.imul()(返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数),Math.fround()(返回一个数的单精度浮点数形式),Math.hypot()(返回所有参数的平方和的平方根),Math.expm1()(返回ex - 1,即Math.exp(x) - 1
),Math.log1p()(返回1 + x
的自然对数,即Math.log(1 + x)
。如果x
小于-1,返回NaN
),Math.log10()(返回以10为底的x
的对数。如果x
小于0,则返回NaN),Math.log2()(返回以2为底的x
的对数。如果x
小于0,则返回NaN),
Math.sinh(x)
返回x
的双曲正弦(hyperbolic sine)Math.cosh(x)
返回x
的双曲余弦(hyperbolic cosine)Math.tanh(x)
返回x
的双曲正切(hyperbolic tangent)Math.asinh(x)
返回x
的反双曲正弦(inverse hyperbolic sine)Math.acosh(x)
返回x
的反双曲余弦(inverse hyperbolic cosine)Math.atanh(x)
返回x
的反双曲正切(inverse hyperbolic tangent)
10.数组的扩展:Array.from(arr, ()=>{})(转化类数组和可遍历的对象为真正的数组),Array.of()(用于将一组值,转换为数组。如果没有参数,就返回一个空数组。这个方法的主要目的,是弥补数组构造函数Array()
的不足。因为参数个数的不同,会导致Array()
的行为有差异。),数组实例的copyWithin(),数组实例的find()和findIndex()(这两个方法都可以接受第二个参数,用来绑定回调函数的this
对象。另外,这两个方法都可以发现NaN
,弥补了数组的IndexOf
方法的不足。),数组实例的fill(),数组实例的entries(),keys()和values(),数组实例的includes()(该方法属于ES7,但Babel转码器已经支持。),数组的空位
ES5对空位的处理,已经很不一致了,大多数情况下会忽略空位。
forEach()
,filter()
,every()
和some()
都会跳过空位。map()
会跳过空位,但会保留这个值join()
和toString()
会将空位视为undefined
,而undefined
和null
会被处理成空字符串。
ES6则是明确将空位转为undefined
。
数组的常用方法见 https://www.cnblogs.com/obel/p/7016414.html