模板字符串
//ES6 模板字符串 : 定义 `字符串`//插值表达式,可以解析js里的变量,还可以解析有返回值的表达式let str = `我${1+4}的名字是${flag?'张三':"李四"},我的年龄是${fn()}`;
展开运算符
//展开数组var arr= [1,2,3,4];var arr2= [5];var res = [...arr,...arr2];console.log(res);//[1,2,3,4,5]可以把伪数组转成数组function fn(){console.log(arguments);//通过 Array.from来把伪数组转成数组var arr = Array.from(arguments);console.log(arr);//通过展开运算符来转换var arr = [...arguments];console.log(arr);}fn(1,2,3)//处理不定参数,rest剩余参数function fn (a,...args){console.log(args);}fn(1,2,3,4)//对象的展开//合并对象,合并配置let obj1 = {name:'zhangsan'};let obj2 = {age:20};var obj = {...obj,...obj2};console.log(obj);//字符串的展开var str = 'sdafefczxcce';var arr = [...str];console.log(arr);
箭头函数
- 箭头函数的语法比函数表达式更简介
- 没有自己的this,arguments,super或new.target
- 不能用作构造函数
- 更适合那些本来需要匿名函数的地方
- 如果该函数是一个构造函数,this指向一个新的对象
- 严格模式下,this指向undefined
- 如果该函数是一个对象的方法,则this指向那个对象
- 自带return,隐式返还,不写大括号会自动返还 ```javascript var elements = [ ‘Hydrogen’, ‘Helium’, ‘Lithium’, ‘Beryllium’ ];
elements.map(function(element) { return element.length; }); // 返回数组:[8, 6, 7, 9]
// 上面的普通函数可以改写成如下的箭头函数 elements.map((element) => { return element.length; }); // [8, 6, 7, 9]
// 当箭头函数只有一个参数时,可以省略参数的圆括号 elements.map(element => { return element.length; }); // [8, 6, 7, 9]
// 当箭头函数的函数体只有一个 return 语句时,可以省略 return 关键字和方法体的花括号
elements.map(element => element.length); // [8, 6, 7, 9]
// 在这个例子中,因为我们只需要 length 属性,所以可以使用参数解构
// 需要注意的是字符串 "length" 是我们想要获得的属性的名称,而 lengthFooBArX 则只是个变量名,
// 可以替换成任意合法的变量名
elements.map(({ “length”: lengthFooBArX }) => lengthFooBArX); // [8, 6, 7, 9]
<a name="wlLId"></a>## 函数默认参数1. js函数默认值都是undefined,有参数就按参数来赋值```javascript//解构赋值function fn ([a,b=5]) {console.log(a,b);}fn([1,2]) //1 2//ES5默认参数function fn(a,b){var a=a || 1;var b=b || 2;console.log(a,b);}fn('',0); //1 2//ES6默认参数function fn (a,b){console.log(a,b);}fn('',0) //0//短路运算符function fn(){let arg = arguments[arguments.length-1];//获取最后一位数if(typeof arg === 'function'){//如果这个数为函数arg && arg();}}fn(1,3,function(){console.log(111);})//是函数就执行,打印111,不是函数就不执行
新增数组方法
//Array.from('伪数组')//Array.of();创建一个新数组let arr = Array.of(7);console.log(arr);
//查找数组某一项let arr = [1,2,3,4,5,6];//查找数组内大于3的数var res = arr.filter(item=>item>3);
//查找某个值的索引let arr = ['1','2','3'];//查找'2'的索引var res = arr.findIndex(item=>item=='2')
//判断数组里是否包含某个值let arr=['1','2','3'];//查找'2'var res = arr.includes('2');
//数组扁平化//flat默认参数是1var arr =[1,2[3,[4,5]]];//2代表扁平两次var res = arr.flat(2)
var res = arr.toString();console.log(res);var newarr=res.split(',');console.log(newarr);
//获取数组里某一项let arr = [1,2,3,4,5];console.log(arr[2]);conlose.log(arr[2]);console.log(arr[arr.length-2]);console.log(arr.at(2));console.log(arr.at(-2));
//一个参数,数组会被这个参数填充起来let arr =[1,2,3,4,5];arr.fill(6);arr.fill('a',2,3);//包前不包后console.log(arr);
字符串新增方法
//判断某个字符是否在字符串里var str = 'abchdef';//字符串里有无degconsole.log(str.includes('deg'));
//重复某个字符var str = '*';//重复五个*console.log(str.repeat(5));
//根据给的位数补全字符串var str = 'abc';var res = str.padStart(5,'$');console.log(res); //$$abcvar str = 'abc';var res = str.padEnd(6,'.'); //abc...console.log(res);
//判断某个字符串 是以某某作为开头endsWidth:var str = 'hello world';console.log(str.startsWith('hello'));console.log(str.endsWith('ll'));
