1.let const
let const是块级作用域
与var的区别:
var声明变量存在变量提升,let 和const 不存在变量提升
const 是定义常量,定义的时候必须赋值
2.class(类)
class Animal {
// 构造函数,实例化的时候将会被调用,如果不指定,那么会有一个不带参数的默认构造函数.
constructor(name,color) {
this.name = name;
this.color = color;
}
// toString 是原型对象上的属性
toString() {
console.log('name:' + this.name + ',color:' + this.color);
}
}
var animal = new Animal('dog','white');//实例化Animal
animal.toString();
3.模块化 module
export import
4.箭头函数 =>
1.不需要写function
var s1 =()=>{
console.log("111111111")
}
2.在箭头函数中this 指向的是上下文this指向的对象
var name = "李四";
var f1 = {
name : "张三",
age:22,
say:function() {
console.log(`say的name是${this.name}`) //张三 在普通函数中,this指向的是调用者对象
},
say2:()=>{
console.log(`say2的name是${this.name}`) //李四 在箭头函数中,this指向的是父级代码的上下文
}
}
f1.say();
f1.say2();
3.当参数只有一个时,方法体只有一行,可以省略()和{},如果有return 也可以省略。
var s=(a)=>{
console.log(a*a)
}
var s = a=>console.log(a*a)
s(2)
5.函数参数默认值
function foo(height = 50, color = 'red')
{
// TODO
}
6.模板字符串
let name = `my name is ${wei}`
7.数组 对象解构
const person = {
name:"dan",
age:22,
sex:"男"
}
const {name,age,sex} = person;
console.log(name,age,sex);
8.for...of循环和for...in 循环
const array = [7, 9, 9, 10, 11];
array.forEach((element, index) => {
// console.log(element, index)
// 7 0
// 9 1
// 9 2
// 10 3
// 11 4
});
// const obj = {
// name:"12312",
// age:22
// }
for (const i of array) {
console.log(i) // 7891011
}
for (const key in array) {
console.log(key); // 01234
// console.log(array[key])
}
for of 遍历的是键值(可以遍历数组)
for in 遍历的是下表
9.对象的简化写法
当对象的属性名和变量名一致时,可以简化
const obj = {
name:"12312",
age:22
}
const obj = {
name,
age
}
10.展开运算符
const a = [1,2,3];
const b = [4,5]
console.log([...a,...b])
const obj = {
name:"12312",
age:22
}
const obj1 = {
age:22
}
console.log({...obj,...obj1})