定义
字符串声明
声明 var let const
赋值 (解构赋值):数组赋值 对象赋值
set数据结构
定义
1.编程思想
POP:面向过程:函数一步步定义,在函数调用执行
OOP:面向对象:先写对方方法,用的时候调用对象方法
封装性
继承性:儿子继承爸爸的一些特性
多态性:不同情况下,作用不同
2.ES6:泛指2015年之后的ecma版本,包括2016,2017等
字符串声明
var lzy =`李志远 ${变量2} ` //拼接变量2的值
var lzy =`李志远 $ {函数名()}` //拼接函数名return值
1.`反引号`声明
2.用 ${ } 直接在字符串内拼接,不需要+号拼接
3.空格/换行会被保留,让代码更美观
声明:var let const
let声明
const声明
项目 | 作用域 | 提升 | 修改 | 作用域链 |
---|---|---|---|---|
var | 函数 | true | true | true |
let | { } | false | true | false |
const | { } | false | false | true |
let变量声明
作用:
1.释放内存,例如循环之后计数器就没有作用了
2.循环里面放函数则会一直开辟堆空间,浪费内存
代码:let lzy =1;
1.块级作用域:{ let声明的变量只在块级作用域有效 } :
(注意:包括循环,函数,不包括对象,在对象中的方法内声明变量相当于在全局作用域声明)
2.变量提升:不会有变量提升;调用在声明之上会undefined;
3.作用域链:
(1)块级作用域内如果用let声明变量,则不会接收父链条传递进来的值;(暂时性死区)
(2)函数嵌套函数时,父函数let声明变量可以传递进子函数(前提是子函数不进行let操作)
const常量声明
作用:
1.例如数学公式中不变的内容
2.内存执行效率比变量高
代码:const lzy =1;
1.声明常量时必须赋值,否则报错
2.块级作用域:{ const声明的常量只在块级作用域有效 }
3.修改
(1)基本数据类型:值不能更改(报错)
(2)引用数据类型:栈中存储的地址不能更改(报错)
(3)引用数据类型:堆中内容可以更改
赋值(解构赋值):数组赋值 对象赋值
定义:解构赋值:分解数据结构,为变量赋值
赋值方式:可以同用函数中「剩余参数(…参数)」接收到(…参数)数组中
1.数组解构赋值
let [a,b,c] =[1,2,3]
let [a,b,...c] =[1,2,3,4,5,6]
1.如果变量多于值,那么多余的变量为undefined
2.对象解构赋值
let {a,b,c} ={a:1,b:2,c:3}
let {a,b,...c} ={a:1,b:2,c:3,d:4}
let{a:a1,b:b1,c:c1}={ a:1,b:2,c:3}
(没测试,这个应该不能用剩余参数)
1.直接赋值,不需要对象点方法
2.a为方法名作用为匹配,输出a1是值
set数据结构
定义:
(1)存储数据:一组数据的集合
(2)类似于数组:set数据结构不能存储重复的值,如果重复则不会存储
(3)可以接收数组作为参数
应用:
(1)搜索功能的历史关键字(等过滤重复的地方)
(2)数组去重(先去重在转化为数组)
代码:
(1)Set数据结构定义:
var lzy = new Set([1,2,3 ])(存储了三个值)
1.Set为构造函数,创建实例对象就是创建Set数据结构
2.不用写构造函数代码,直接写new就可以
(2)Set数据结构方法:
var lzy = new Set()
1.lzy.add(1).add(2).add(3)
-向set结构添加值
-返回set结构本身
2.lzy.delete(1).delete(2).delete(3)
-向set结构删除值
-返回布尔值,返回是否删除成功
3.lzy.has(1)
-判断lzy中是否有1这个值
-返回布尔值
4.lzy.clear(空)
-清除set结构所有值
-没有返回值
5.lzy.forEach(函数)
-循环Set数据结构
-每次循环调用, forEach(函数),会将循环值当参数传递进函数
-没有返回值