15es6.md
goer ... 2022-01-05 大约 4 分钟
[toc]
# es6新语法
先前我们学的都是es5js的基础语法
# 1.变量
var : 分为局部变量和全局变量(函数里)
const : 常量, 一旦声明或赋值就不能在变(一般大写)
let : 定义变量,只能在当前的块级(大括号)里使用
var i = 10;
for(var i=0; i<5; i++){
}
console.log(i) //这样打印出的i是多少 5
// 5
// 如果var在函数内,局部变量,函数执行完就销毁的
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
// 常量一般大写
const PI = 3.1415926;
// 声明之后不会再改变
1
2
3
4
2
3
4
let a = 10;
for(let b=0; b<3; b++){
console.log(a) // 10 10 10
}
console.log(a) // 10
console.log(b) // 报错 找不到b
let c= 10;
let c = 20;
//报错 ,不能声明两次
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 2.解构赋值
- 变量
// 赋值变量
var [a,b,c] = [1,2,3] //依次对应
var [,,c] = [a,b,c] //没有变量名也可以,还没想好 c='c'
var [a] = [1,2,3] // 只有a = 1 其余值是多余
1
2
3
4
2
3
4
- 数组
// 数组 ... 再前加三个点,数组只能再最后
var [a,b,c,...d] = [1,2,3,4,5,6,7] // d=[4,5,6,7]
//数组只能在最后,不然报错
1
2
3
4
2
3
4
- 字符串
// 字符串 按照顺序将字符串拆开赋值
var str1 = 'hello world';
var [a,b,c,e,f] = str1; // a=h b=e c=l e=l f=o
1
2
3
2
3
- 对象
// 对象用括号
var {a,b,c} = {a:'11',b:'22',c:'33'};
1
2
2
- 数值
// 数组不能解构赋值 报错
var i = 100;
var [a,b,c] = i //不行
1
2
3
2
3
length属性赋值给其他变量
var str1 = 'hello world';
var (length:str2) = str1; //str2 = str1.length; 11
1
2
2
# 3.字符串方法
字符串方法拓展
indexOf()
字符串中找字符,返回字符首次出现的索引位置,没有就返回-1.
var str1 = 'hello world';
console.log(str1.indexOf('d')); // 10
str1.indexOf('x') //-1
1
2
3
2
3
includes()
查找字符,存在true 否则false
str1.includes('x') //false
str1.includes('o') //true
1
2
2
startsWith()
判断首字符,返回布尔值endsWith()
判断尾字符,返回布尔值
str1.startsWith('d') //false
str1.endsWith('d') //true
1
2
2
repeat()
字符串重复输出
consloe.log('a'.repeat(5)) //输出5次a
('c'.repeat(3.6)) //向下取整 ccc
('c'.repeat(0)) //false 空字符串
(5,repeat(5)) //报错
//只能使用字符串, 参数是正数,不能是负数
1
2
3
4
5
2
3
4
5
padStart
在字符串的前面添加字符padEnd
在字符串的后面添加字符
var st = 'aaa';
consloe.log(st.padStart(10,'x')) // 第一个参数是字符串的最终长度 // xxxxxxxaaa
(st.padEnd(6,'xyz')) //aaaxyzx
(st.padStart(7,' ')) //空格 4个空格aaa
(st.padEnd(3,'')) //没有变化
(st.padEnd(5,111)) //数字也可以 aaa11
consloe.log(st) // aaa
1
2
3
4
5
6
7
2
3
4
5
6
7
# 4. 引号
" ", '' :只能写单行数据,不能换行
`` :反引号,可以换行
var a = `a
<br/>
c`;
1
2
3
2
3
# 5. 数组方法
数组方法拓展
Array.from
将对象转换为数组格式,必须写length
var Ob1={
0:'aa',
1:'bb',
2:'cc',
'length':3, //必须写length: 写多长,它截取多长
// 2 截取到 0 1
}
var arr1 = Array.from(Ob1);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
coprWidthin()
截取和替换
var arr2 = ['aa','bb','cc','dd','ee','ff'];
arr1.copyWithin(0,2,4) // 三个参数
// 首先看后面两个参数,
// 从2开始截取,截取到4,不包含4, 截取多少个就替换多少个 //c d
//第一个参数替换
// c d c d e f
arr1.copyWithin(4,0,1) // a b c d a f
1
2
3
4
5
6
7
2
3
4
5
6
7
find()
找出第一个符号条件的元素findIndex()
找出第一个符号条件的元素索引
// find()的参数好像只能是函数
var arr = [ 1, 2, 3, 4];
conslog.log(arr.find(function(){
return n>3; //4 满足大于3的条件
}));
conslog.log(arr.findIndex(function(){
return n>3; //3 满足大于3的条件的索引
}));
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
fill()
填充数据
// 将新数据填充,不保留老数据
var arr = ['a','b','c'];
arr.fill(123) // [123,123,123]
// 20个a
var arr1 = new Array(20).fill('a'); //填充20个a
1
2
3
4
5
6
2
3
4
5
6
[...arr1,...arr2]
合并数组
// es5
// concat() //数组
console.log(arr1.concat(arr2).concat(arr3))
// es6
console.log([...arr1,arr2])
1
2
3
4
5
6
2
3
4
5
6
# 6.箭头函数
与es5区别较大
// 1. 减少代码量 不用写return
conslog.log(arr.findIndex(function(){
return n>3; //3 满足大于3的条件的索引
}));
arr.findIndex(() => n>3); //3 满足大于3的条件的索引
// 2. this的指向 当前对向
//普通函数this只能指向当前对象
var conarr = setInterval(() => { console.log(aa)},3000) // 3秒打印
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11