概括图
下载地址
const关键字
- const关键字声明常量的(一旦声明就无法更改)
- a:没有变量提升
- b:有块级作用域
- c:不能重复声明
- d:不能重新赋值
- e.声明必须要初始化值
使用场景:
a.一些不会变化的值,比如圆周率PI
b.大事件项目中,保存基地址的就可以用常量.
a.没有变量提升
//a.没有变量提升
console.log(num); //报错了
const num = 100 ;
b:有块级作用域
//b.有块级作用域
{
const num = 200;
}
console.log (num); //报错了
c:不能重复声明
//c.不能重复声明
const num = 300;
const num = 400;//报错了
console . log(num);
d:不能重新赋值
//d.声明必须要初始化值
const num;//报错了
console.log (num);
e.声明必须要初始化值
//e.不能重新赋值
const num = 10;
num = 20;//报错了
console . log(num);
let关键字
区别 | var | let |
---|---|---|
变量提升 | 有 | 无 |
作用域 | 函数作用域 | 块级作用域 |
重复声明 | 有 | 无 |
重新赋值 | 有 | 有 |
a.没有变量提升
//a.没有变量提升
console.log(age);//报错了
let age = 38;
b.有块级作用域
//b.有块级作用域
for(let i = 0; i<10; i++){
}
console .log(i);//报错了
c.不能重复声明
//c.不能重复声明
let num = 10;
let num = 20;//报错了
console. log (num);
d.可以重新赋值
//d.可以重新赋值
let num1 = 10;
num1 = 20;
console. log (num1);
对象解构赋值
取对象中属性的值,赋值给变量.
对象的赋值没有顺序
//声明一个对象
let obj={
name: "波波",
age: 38,
gender:"男",
score: 100,
};
let {name :name1, age : age1, gender : gender1, score :score1} = obj;
console.log(name1 , age1 , gender1, score1)
箭头函数
匿名函数的一个简写
简写规则:
- a. function 改成=> = >可以读成goesto
- b.如果只有一个形参,那就可以省略形参小括号.
- c.如果不是一个形参,0个或者多个形参, 那就不能省略这个形参小括号了
- d.如果函数体只有一句话,那就可以省略函数体的大括号
- e.如果函数体只有一句话, 并且这一句话是return 返回值,那return也要省略.
- f.如果函数体不是一句话, 那就不能省略这个大括号.
- b.如果只有一个形参,那就可以省略形参小括号.
- d.如果函数体只有一句话,那就可以省略函数体的大括号
let fn = function(name){
console. log( '我的名字是' +name );
}
fn('111')
箭头函数
let fn = name => console. log('我的名字是' +name)
fn('111')
- c.如果不是一个形参,0个或者多个形参, 那就不能省略这个形参小括号了
let fn = function(name,age){
console. log( '我的名字是' +name ,'我的年龄是' + age);
}
fn('111',11)
箭头函数
let fn = (name,age) => console. log('我的名字是' +name,'我的年龄是' + age)
fn('111',11)
- e.如果函数体只有一句话, 并且这一句话是return 返回值,那return也要省略
let fn4 = function(age) {
return age + 10;
}
//箭头函数
let fn4 = age => age+10;
fn4(38);
- f.如果函数体不是一句话, 那就不能省略这个大括号.
let fn2 = function (num1,num2) {
console.log(num1+num2)
return num1+num2+30
}
let fn2 = (num1,num2) => {
console.log(num1+num2)
return num1+num2+30
}
console.log(fn2(1, 2));
对象成员简写
对象里面有name,age,gender.score属性
希望这些属性的值是上面对应变量的值,
//声明了一些变量
let name='千里';
let age = 18;
let gender = '男';
let score = 100;
var obj={
name ,
age,
gender,
// fenshu,//相当于fenshu:fenshu,报错了,因为外面没有fengshu这个变量.
fenshu:score,//这里就不会报错,取外面score变量的值赋值给这个fengshu属性
score,
sayHi() {
console.log('哈哈,你好')
}
}
console.log(obj);
obj.sayHi();
对象展开
...
//声明一个对象
let chinese = {
skin:'黄色皮肤',
hair: '黑色头发',
sayHi(){
console.log('你好,你吃了吗?');
}
}
//声明一个对象
let zhuBo = {
skill: '跳唱rap打篮球,老铁双击666',
song: '唱大碗宽面'
}
//声明一个对象
let linge = {
// skin:'黄色皮肤',
// hair: '黑色头发',
// sayHi(){
// console.log('你好,你吃了吗?');
// },
// skill: '跳唱rap打篮球,老铁双击666',
// song: '唱大碗宽面'
...chinese,
...zhuBo,
gender:'男',
hair: '白发苍苍'//重新给hair这个属性赋值,会覆盖原来的值.
}
console.log(linge);
数组展开
使用场景:
a.数组拼接
b.利用Math. max( )/Math. min()来求数组中的最大值/最小值.
//求数组中的最大值.
let arr1 = [10, 8,7, 66,65,34];
//以前的做法
// let max1 = Math. max.apply(Math,arr1);
// console.log(max1);//66
//数据展开语法
let max2 = Math. max(... arr1);
console.log(max2);//66
数据类型Set
作用和数组类似,和数组不同的是:他不能存放重复的元素
应用场景:数组去重.
let set1 = new Set([10,20, 30, 40,10, 20,30,50]);
let arr1 = [10, 20,30 , 40, 10,20,30 , 50];
let arrNew=[...new Set(arr1)];//这句话就是把arr1去重,得到一个新的数组arrNew
console.log(arrNew) ;//[10, 20,30, 40, 50 ]
模板字符串
会保留原样字符串格式,以及可以占位。
let name = '千里';
let age = 38;
let score = 100;
console. log(`我的名字是${name},我的年龄是${age},我的成绩是${score}`);//我的名字是千里,我的年龄是38,我的成绩是100
补充:数组方法
forEach();
遍历数组,把遍历出来的每一项交给回调函数.
方法没有返回值
let arr = [10, 20,30, 40];
arr.forEach(function( item, index) {
//item就是遍历出来的每一个项
//index就是遍历出来每-项对应的索引.
// console. log(item, index);
console.log(item + 10);
});
map()
遍历数组的,有返回值.
let arr = [10, 20, 30 , 40];
let arrNew = arr.map(function( item, index) {
//item就是遍历出来的每一项
//ipdex就是遍历出来的每一项对应的索引
// console.log(item, index);
return item*item
});
console.log(arrNew);//[ 100, 400, 900, 1600 ]
filter(); 过滤器
filter()方法会返回一个新的数组,新的数组中的元素是通过检查后符合条件的元素.
let arr=[10,20,11,23,45,67,88]
let arrNew = arr.filter((item,index)=>{
//item就是遍历出来的每一项
//index遍历出来的每一项对应的索引
// console . log (item, index);
return item % 2 == 0如果条件成立,会返回当前项,如果条件不成立,不会返回当前项
})
console.log(arrNew);//[ 10, 20, 88 ]