es6学习笔记(四)
一. 字符串扩展
1. unicode表示的改进
es5支持unicode表示字符,限于\u0000--\uFFFF之间的字符,超出范围的字符用双字节形式表达
console.log("\u0061"); // "a"
console.log("\u00611"); // "a1",即\u0061 + 1
es6将码点放进大括号
console.log('\u{00611}'); //不再是"a1"; console.log("\u{61}\u{62}\u{63}"); //abc
2. 字符串遍历(for...of)
for(let code of "foo"){ console.log(code); // f // o // o }
3. 字符串查找includes、startsWith、endsWith
es5几乎只有indexOf方法来判断一个字符串是否包含在另一个字符串中。
es6新增这三个方法:
includes:是否包含某个字符串。
startsWith:是否在头部。
endsWith:是否在尾部。
第一个参数是string,第二个参数n表示开始搜索的位置(endsWith针对前n个字符)
4. 字符串重复repeat
将原字符串重复n次,返回新字符串。
二. 正则的扩展
es5中正则表达式对象有一下两种声明方式:
var regex = new RegExp('[a-z]', 'i'); // 等价于 var regex = /[a-z]/i;
es6允许第一个参数为正则表达式
var reg = new RegExp(/[a-z]/, 'i');
1. 能用正则表达式做参数的字符串方法
var str = "abc"; console.log(str.match(/[a-z]/g));// 检索指定的值,返回数组 console.log(str.replace(/[a]/,"b")); //替换字符 console.log(str.search(/[b]/)); //检索指定字符串,返回索引值 console.log(str.split(/[]/)); //分割字符串,返回数组
2. 属性
es5 :source属性获取正则表达式正文
es6 :sticky属性是否使用了y修饰符、flags属性获取正则表达式修饰符
三. 数值的扩展
1. 进制表现法
二进制:0b111110111 === 503
八进制:0o767 === 503
十进制:Number("0b111110111") // 503
2. Number对象的方法与属性
Number.isFinite() :是否有限
Number.isNaN():是否为NaN
Number.parseInt() 全局方法移到了Number对象上
Number.parseFloat() 全局方法移到了Number对象上
Number.isInteger() 是否为整数
Number.EPSILON 常数,一个误差允许范围
Number.MAX_SAFE_INTEGER / Number.MIN_SAFE_INTEGER:最大安全整数 / 最小安全整数
Number.isSafeInteger() :是否为安全整数
3. Math对象
Math.trunc():去除小数点部分,返回整数
Math.sign():判断正数、负数、零。正数返回+1、负数返回-1、0返回+0、-0返回-0、其它返回NaN
Math.cbrt():计算立方根
Math.clz32():返回数值32位二进制前导0的个数
Math.hypot():所有参数平方和的平方根(勾股定理的长边)
三角函数方法
四. 数组的扩展
1. Array.form:将类似数组的对象和可遍历的对象转化为数组。
2. Array.of:将一组值转化为数组
3. 实例方法Array.prototype.copyWithin(target,start,end):数组成员复制并覆盖
4. 实例方法Array.prototype.find(callback) / Array.prototype.findIndex(callback) :数组成员依次执行回调函数
5. 实例方法Array.prototype.fill():填充数组
6. 实例方法entries()(键值对遍历)、keys()(键名遍历)、values()(键值遍历)
7.实例方法Array.prototype.includes():是否包含给定值
五. 函数的扩展
1. 参数可以设置默认值,参数已默认声明,所以用let、const不能重复声明。
2. length属性返回没有设置默认值的参数个数,指定默认值后,length