1.let(变量) 与 const(常量) 声明 变量和常量 var
let 的使用:
(1)作用域只局限于当前代码块
(2)使用let声明的作用域变量不会被提升
(3)在相同的作用域下面不能声明相同的变量
(4)for循环体现let 的父子作用域
const的使用:
(1)只在当前的代码块中有效
(2)作用域不会被提升
(3)不能重复声明
(4)声明的变量必须赋值
2 .解构赋值 (从对象和数组中提取)
(1)基本用法
let name='张三',age=18,sex='女';
console .log(name)
console .log(age)
console .log(sex)
let [name,age,sex] =['张三',18,'女']
(2)对象的解构赋值
let {name,age,sex}={'name':'张三','age':39,'sex':'女'}
console.log(name)
console.log(age)
console.log(sex)
(3)数组的解构赋值
let [a,b,c,[d]] = [1,2,3,[4]]
let [arry]=[]
let [a,b,c] =[3,5,7]
(4)基本类型的解构赋值(对于str,number不行)
let [a,b,c]= '我爱你'
3.数据集合(set 也有去重的方法)
(1)创建的一个集合
var set = new Set (['张三',‘李四’,‘王五’,'张三',‘李四’])
console.log(set)
(2)一个属性 console.log(set.size)
(3)四个方法
1.set.add('刘德华')
console.log(set)
2.set.delete('张三')
3.console.log(set.has(' 张三'))
4.set.clear()
console.log(set)
4.数据集合(map 有去重的方法)键值对的集合
let obj1 ={a:1},obj2={b:3}
const map = new Map ([
['name','张三'],
[‘age’,20],
['sex','男'],
['obj1','今天天气很好'],
[‘obj2’,'适合步行']
]);
console.log(map)
(1)一个属性 console.log(map.size)
(2)方法
set和get
map.set('fridrends',['张三',‘李四’]).set(['dog','小草'])
console.log( map.get('name'))
map.delete(obj1)
map.has(obj2)
map.clear()
map.keys/values/entries
遍历
map.forEach(function(value,index){
console.log(value + ':' +index)
})
5.Symbol(解决命名冲突)
(1)定义
let str1 = symbol()
let str2 = symbol()
console.log(str1===str2) // false
(2)描述
let str1 = symbol('name')
let str2 = symbol('name')
console.log(str1 === str2) //false
(3)对象的属性名
const obj = {}
obj[Symbol('name')]='张三'
obj[Symbol('name')]='李四'
6.class
(1) 构造函数
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
constructor:Person,
print(){
console.log('我叫'+this.name+','+‘今年’+this.age+'岁')
}
}
let person = new Person ('张三',30)
console.log(person)
(2) 通过class面向对象
class Person{
constructor(name,age){
this.name = name;
this.age = age;
}
print(){
console.log('我叫'+this.name+','+‘今年’+this.age+'岁')
}
}
let person = new Person ('张三',30)
console.log(person)
7.内置对象扩展
(1)模版字符串
let str = 'ggggg'
let html=~
<p>${str}</p>
~
(2)数组的扩展
Array.from
Array.of
(3)对象的扩展
如果key和value是一样的,写一个就够了
let name = '张三';
let age = 18;
let obj = {
name,
age
}
console.log(obj)
(4)object.assign(目标,obj1,obj2)
(5)延展操作符( 用于数据的传递)
let str='今天真的好热'
let strArray=[...str];
console.log(strArray)
面试案例去重
let Array = [1,3,4,2,3,45,6,7]
new Set(Array)
console.log([...new Set(Array)])
8.函数扩展
(1)形参设置默认值
function sum ( num1=10,num2=30){
console.log(num1+num2)
}
sum()
(2)参数形式 (延展操作符)
function sum (...nums){
let res = 0;
for(let value of nums ){
res+=value
}
return res;
}
console.log(sum(1,2,34,5,5555))
9.箭头函数
let sum = (num1,num2) = >{return num1+num2}
console,log(sum(20,30))
let nameArr = ['张三',‘李四’,‘王五’];
nameArr.forEach((value,index)=>{
console.log(index+'.'+value)
})