1.let 的特点
- var 只能通过函数形成函数作用域
- let 声明的变量存在块级作用域 ,只要在花括号内,外部就访问不了let声明的变量(if switch for 都可以形成局部作用域)
- let 不能在同一个作用域重复声明同一个变量
- let定义的变量不存在变量提升(变量提升,var声明的变量会先把变量预编译并赋值为undefined,而let声明的变量不会,如果在声明变量之前访问,就会报错)
- 存在暂存死区
- 案例:利用for循环,输出1-10十个按钮,每个按钮单击时,一次打印1-10
- let 的方法
2.const声明
- 特征
- 1.定义的值一般不能被修改
- 2.存在作用域,并且只能在当前作用域生效
- 3.不存在变量提升
- 4.不能重复定义声明
- 5.暂存死区
- 6.当const的值是一个对象的时候,对象的值可以被修改
- 在之前是怎么定义一个常量
- 封装一个定义常量的方法
-
3.引用数据类型的解构
数组解构
- 特征
- 1.定义的值一般不能被修改
- 2.存在作用域,并且只能在当前作用域生效
- 3.不存在变量提升
- 4.不能重复定义声明
- 5.暂存死区
- 6.当const的值是一个对象的时候,对象的值可以被修改
- 在之前是怎么定义一个常量
- 封装一个定义常量的方法
-
对象-字符串解构
- 对象的解构是按键名解构,没有位置,不区分先后,想拿谁就写谁的键名,键名要一致
- 拓展运算符(和数组差不多)
- 字符串的解构赋值(和数组一样,按位解构 )
-
比较复杂的解构案例
- 数组-案例1
- 案例2
- 对象的案例
- 对已经存在的变量进行解构
-
字符串模板: `` (反引号)
- 字符串模板中引入变量:${变量} 在很多实例中也实用
- 特点
- 可以任意换行,标点符号,特殊符号,直接写
-
箭头函数
- function(a,b){return a+b}-------(a,b)=>{return a+b} 把function(a,b)转化为(a+b)
- 当箭头函数的参数只有一个是 () 可以省略
- 当函数题代码只有一行时 { }可以省略不写 ,注意:如果不加花括号 函数体代表return
- 注意:箭头函数没有this,保留this关键字
- 函数的arguments可以获取传入的所有参数,但是箭头函数没有arguments
- 箭头函数的this指向
- 箭头函数不能作为构造函数
- 箭头函数中的this指向的是上一层作用域
- 函数的默认参,不定参,拓展参
- 当参数是undefined时候取默认值
- 并不确定函数的个数时,用不定参
- 拓展参是实参
- function(a,b){return a+b}-------(a,b)=>{return a+b} 把function(a,b)转化为(a+b)
-
字符串的拓展
- padStart( ) 方法 -----------在字符串前填充某字符串到某长度,如果填充的字符串长度不够,会重头再次开始填充,返回值是新字符串
- padEnd( ) 方法 -----------在字符串末尾填充某字符串到某长度,如果填充的字符串长度不够,会重头再次开始填充
- startsWith ( ) startsWith( ) 方法 检测字符串是否以某字符开头,以某字符结尾,区分大小写,返回值是布尔值
- 判断一个字符串是否包含某字符串
- 老方法
- includes( 字符串) 方法: 判断是否包含某字符串,返回值是布尔值
- 8.数组拓展
- 利用拓展运算符:. . . ,可以在函数传参时直接传入数组
- Array.from( ) 方法 :把一个类数组转换为数组
- 类数组 : 键 是数字+length属性
- 构建数组
- 构建方式创建数组,当参数有多个时,每一个都是数组的项,只有一个的话,是数组的长度
- fill (参数1,参数2,参数3 ) 方法 :以特定内容填充数组 ,
- 参数1:必填,只有一个参数时,会把原数组的内容全部替换掉,如果原数组有元素,也会被覆盖掉
- 参数2,参数3 :指定填充的开始位置和结束位置,可以不写
- includes( )方法:判断是否 包含某个元素
- keys()打印下标,vlaues()打印数组元素
- entries 获取每一组键和值
- find 方法 :根据条件(回调)按顺序遍历数组,当回调函数返回为true时,返回对应的第一条数据
- findIndex 遍历:根据条件(回调)按顺序遍历数组,当回调函数返回为true时,返回对应的第一条数据的下标
- map,some filter 方法 ,在数组中已经介绍过
- parseInt ,parseFloat
- isNaN:判断是否是一个非数组 isFinte:判断是否是一个数值
- Number.isSafeInteger 判断一个数值是否是有效数 ,返回值是布尔值
-
对象新增方法
- 1.object.create( ) :通过现有对象创建一个新的对象,新对象的原型上有源对象的方法和属性
- 通常用在继承上
- 2.object.keys( ) :获取对象所有键的集合成为一个数组
- 3.object.values( ) : 获取值的集合
- 4.object.assign( ):合并对象,重复的会取最后一个
- 1.object.create( ) :通过现有对象创建一个新的对象,新对象的原型上有源对象的方法和属性
- 对象的简写形式
- 属性名可以用变量拼接