ES6
let 和 const
for(var i = 0; i < 5; i++){
console.log(i);
}
console.log("循环外:" + i)
console.log(“循环外:” + i) :会打印出来,结果: 5
var定义的变量会成为全局变量,
使用let声明局部变量
//1.let声明局部变量
for(var let = 0; i < 5; i++){
console.log(i);
}
console.log("循环外:" + i)
const 声明的变量是常量,不能被修改
const person={
name:"lisi",
age:15
};
person={
name:"lisi",
age:11
}
字符串扩展
includes()
:返回布尔值,表示是否找到了参数字符串。startsWith()
:返回布尔值,表示参数字符串是否在原字符串的头部。endsWith()
:返回布尔值,表示参数字符串是否在原字符串的尾部。
解构表达式
数组
let arr = [1,2,3]
const [x,y,z] = arr;// x,y,z将与arr中的每个位置对应来取值
// // 然后打印
console.log(x,y,z); // 结果: 1 2 3
对象
const person={
name:"jack",
age:22,
language:['java','python','css']
}
const {name,age,language} = person;
console.log(name);
console.log(age);
console.log(language);
运行结果:
const person={
name:"jack",
age:22,
language:['java','python','css']
}
const {name:n,age,language} = person; // name:n n为name别名
console.log(n);
console.log(age);
console.log(language);
结果同上
函数优化
function add(a,b){
// 判断b是否为空,为空就给默认值1
b = b || 1;
return a+b;
}
// 传一个参数
console.log(add(10))
function add(a,b=1){
return a+b;
}
console.log(add(10))
箭头函数
var print = function (obj){
console.log(obj);
}
// 简写为====》
var print2 = obj =>console.log(obj);
// 多个参数时:
// 两个参数时:
var sum = function(a,b){
return a+b;
}
// 简写为====》
var sum2 = (a,b) => a+b;
// 代码不止一行,可以用{}括起来
var sum3 = (a,b) => {
return a + b;
}
对象的函数属性简写
let person = {
name:"jack",
// 之前:
eat:function(food){
console.log(this.name+"在吃"+food);
},
//箭头函数版:
eat2:food => console.log(this.name+"在吃"+food),
//简写版:
eat3(food){
console.log(this.name + "在吃" + food);
}
箭头函数结合解构表达式
// 箭头函数结合解构表达式
const person = {
name:"jack",
age:21,
language: ['java','js','css']
}
function hello({name}){
console.log("hello,"+name)
}
hello(person)
如果用箭头函数和解构表达式
var hi = ({name}) => console.log("hello," + name);
console.log(hi(person))
map 和 reduce
map()
:接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。
parseInt:转为int类型
//map
let arr = ['1','20','-5','3'];
console.log(arr)
arr = arr.map(s => parseInt(s));
console.log(arr)
reduce()
:接收一个函数(必须)和一个初始值(可选)。
第一个参数(函数)接收两个参数:
- 第一个参数是上一次reduce处理的结果
- 第二个参数是数组中要处理的下一个元素
reduce()
会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。如果是第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数
const arr = [1,20,-5,3];
let a=arr.reduce((a,b) => a+b);
console.log(a);
对象扩展
- keys(obj):获取对象的所有key形成的数组
- values(obj):获取对象的所有value形成的数组
- entries(obj):获取对象的所有key和value形成的二维数组。格式:
[[k1,v1],[k2,v2],...]
- assign(dest, …src) :将多个src对象的值 拷贝到 dest中(浅拷贝)。
// 对象扩展
let p={name:"lisi",age:20};
// 将后面的对象中的属性复制到p中
Object.assign(p,{sex:0},{birth:19881027});
console.log(p)
数组扩展
- find(callback):数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
- findIndex(callback):数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
- includes(数组元素):与find类似,如果匹配到元素,则返回true,代表找到了。
// 数组扩展
let arr=[1,20,-5,3];
//let t=arr.find(s=>s==20); // return 20
//let t=arr.findIndex(s=>s==20); // return :1 代表找到了
let t=arr.includes(20); // return true:代表找到了,找不到返回false
console.log(t)