模板字符串
//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默认参数是1
var 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';
//字符串里有无deg
console.log(str.includes('deg'));
//重复某个字符
var str = '*';
//重复五个*
console.log(str.repeat(5));
//根据给的位数补全字符串
var str = 'abc';
var res = str.padStart(5,'$');
console.log(res); //$$abc
var 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'));