# 正则扩展
- u 修饰符
u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符。也就是说,会正确处理四个字节的 UTF-16 编码。 - y 修饰符
y修饰符,叫做“粘连”(sticky)修饰符。y修饰符确保匹配必须从剩余的第一个位置开始 - s修饰符
s修饰符,使得.可以匹配任意单个字符。称为dotAll模式,即点(dot)代表一切字符
# 数值扩展
- 二进制和八进制
二进制前缀0b(或0B),八进制前缀0o(或0O) - Number对象
- isFinite() 是否有限
- isNaN()用来检查一个值是否为NaN。
parseInt,parseFloat,移植到Number对象,行为不变Number.isFinite(Infinity); // false Number.isNaN(NaN) // true Number.isNaN(15) // false
- isInteger() 数值是否为整数
Number.isInteger(21) // true Number.isInteger(21.1) // false
- trunc()去除一个数的小数部分,返回整数部分
- sign()判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
- 参数为正数,返回+1;
- 参数为负数,返回-1;
- 参数为 0,返回0;
- 参数为-0,返回-0;
- 其他值,返回NaN
Math.trunc(4.1) // 4 Math.trunc(4.9) // 4 Math.sign(-5) // -1 Math.sign(5) // +1 Math.sign(0) // +0 Math.sign(-0) // -0 Math.sign(NaN) // NaN
- 指数运算符
2 ** 2 // 4
2 ** 3 // 8
# 函数扩展
- 参数设置默认值
function log(x, y = 3) {
console.log(x, y);
}
function foo(x = 5) {
let x = 1; // error 默认声明的
const x = 2; // error
}
- rest参数
...变量名替换arguments对象
function add(...values) {
console.log(values)
}
- 严格模式
函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式 - 箭头函数
let f = v => v;
let foo=(a,b)=>{a*b}
注意点:
- 函数体内的this对象,就是定义时所在的对象,不是使用时所在的对象
- 不可当作构造函数,也就是说,不可以使用new命令
- 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替 (...)
- 不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
- 箭头函数可以绑定this对象,大大减少了显式绑定this对象的写法;
- 其他
尾调用:函数的最后一步是调用另一个函数。
function f(x){
return g(x);
}
尾递归:函数的最后一步是调用自身
function Fibonacci2 (n , ac1 = 1 , ac2 = 1) {
if( n <= 1 ) {return ac2};
return Fibonacci2 (n - 1, ac2, ac1 + ac2);
}
Fibonacci2(100)
//允许函数的最后一个参数有尾逗号
function foo(
param1,
param2,
) { /* ... */ }
← es6 声明变量六种方法 数组的扩展 →