严格模式
在程序或函数的开头处 加一个 “use strict”
严格模式下的要求 :
1、变量必须用var定义
2、八进制被禁用
3、函数必须声明在程序的最顶端
1、let 关键字 块级作用域
特点
1、let 声明变量 通过let方式声明的变量 变量声明之前该变量不可用 这种现象就称作 暂时性死区
2、let 不允许重复声明变量 在函数体内部 不能通过let方式声明和形参相同的变量
3、let 必须在某个代码块{ }内部使用,输出也要在代码块内部
4、let 必须先定义在使用 在函数体的内部 不能实现 变量提升
5、let 循环时,变量输出的是最后一次循环结束时的数值
给的时数值,而不是变量,且只能在循环体内使用
循环结束后,变量失效不起作用;
let 应用 : 获取下标(选项卡)
2、this 指向改变
this含义--当前对象 : 指事件的调用者 或 方法的调用者
改变匿名函数的this指向 :
1、改变匿名函数的指向
function(){}.bind(this要指向的对象)
2、改变非匿名函数的指向
function fn(){}
fn.apply(函数体内部this指向对象) 或 call(函数体内部this要指向对象)
即函数名.apply( )
3、for...of
for...of
遍历值,不能遍历json
for ... in
遍历键(下标)
4、const 关键字
定义常量的关键字
一般为了和变量区分 常量定义用大写字母
常量一旦被定义,就不能重复更改常量值
const PI = 3
PI = 3.14 报错
5、字符串模板 (解决字符串拼接)
解析字符串中的变量
字符串模板 `${ }`
字符串模板中 既可以识别变量 又可以识别函数
6、 箭头函数 用来改变匿名函数的写法
定义 : () => { }
带有参数 : (参数) => { 函数体 }
带有返回值 : ()=>{ return 返回值 }
7、 解构赋值 : 解析结构进行赋值
1、可以一次性定义多个变量
2、可以让一个函数返回多个值 利用 []
3、解构赋值可以作用在函数的参数上 参数传递顺序可以改变 利用 { }
4、解构赋值 可以 实现两个数的交换
8、Array.from
Array.from : 将一个含有length 属性的 对象、(集合、类数组、伪数组) 转成 真正的数组
Array.from( obj )
9、set集合 和 map集合
Set集合 : var set = new Set(); 定义一个set集合
set集合特点 : 自动去重 不会进行自动类型转换
实现数组去重 : Array.from( new Set(arr) )
史上最短的数组去重的方法 : [...new Set(arr)]
set集合的方法 :
add() 向集合中添加一个数
delete() 删除集合中的某个数
has() 判断集合中是否含有某个值
clear() 清空集合
通过 size 属性 获取集合元素个数
Map集合 ---存储的数据以键值对形式存储的 :
set(键值对) 向集
10、 Symbol类型
var num= new Number()
定义一个Symbol类型的数据
var lichune = Symbol("李春娥");
Symbol类型可以作用在对象上,对对象的某个属性起到保护作用