let 与const 关键字声明变量
let与var
1.let没有变量提升(预解析) let变量必须先定义再使用
2.不能重复声明变量
3.let具有块作用域
const与let
1.let的值可以改变,const不可以改变
2.let说明的时候可以不赋值,const必须赋值
简化函数书写
语法
()=>{}
funcation(){}
简写
1.形参只有一个,括号可以省略
(m)=>{}
m=>{}
2.函数体只有一行代码
大括号可以省略
如果只要一行代码,并且代码时return语句,大括号和return语句都可以省略
函数默认值
ES5实现方法:
m=m||100
ES6实现方式:
function fun(m=100){}
100为默认值
解构赋值
快速从对象或者数组中取出成员的一个语法方式
let{属性,属性}=变量名
{}是专门解构对象使用的
[]是专门解构数组使用的
两者不能混用
展开运算符
符号...
作用:将数组展开
应用:数组合并
对象字面量简化写法
对象属性与变量名相同,只写一个
新增类型
Symbol
数据类型
基本数据类型
string number boolean null undefined
复杂数据类型
Object Array Math Date String Number Boolean ...
Symbol
- ES6新增加的基本数据类型
- ES6引入Symbol的原因:
ES5的对象属性名都是字符串,很容易造成属性名冲突。
比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突。
如果有一种机制,保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突。
- Symbol 表示独一无二的值
- 定义
let sym = Symbol(描述符)
描述符 => 描述当前symbol表示什么意义
- 检查数据类型
set
javascript内置对象
Object Array Date Math ...
Set
=> 复杂数据类型
=> 作用
存储无序数据的集合
=> 创建
let set = new Set() //空集合
let set = new Set([1,2,{name:'jack'}, function(){},'hello'])
=> 属性和方法
size
add
delete
clear
=>遍历集合set forEach
=> 特点
集合set中元素不能重复
=> 应用
//数组去重
+ indexof或includes
定义一个新数组,存储不重复元素
遍历原数组, 判断新数组中是否存在原数组元素,如果不存,加入新数组
let arr = [1,2,1,2,4]
let newArr = []
arr.forEach((item)=>{
if(newArr.indexOf(item) == -1){
newArr.push(item)
}
})
+ 双重for循环 + splice
for(let i = 0; i < arr.length; i++){
let item = arr[i]
for(let j = i+1; j<arr.length; j++){
if(item == arr[j]){
arr.splice(j,1)
j--
}
}
}
//数组去重
function test2(){
// 集合set转数据Array
let set = new Set([10,20,30])
let arr = [...set]
console.log(arr)
console.log(arr[0])
}
// test2()
function test3(){
// let arr = [10,20,10,30,20]
// console.log(arr)
// let set = new Set(arr)
// arr = [...set]
// console.log(arr)
// 代码行数越少出错概略越低
let arr = [10,20,10,30,20]
arr = [...new Set(arr)]
console.log(arr)
}
for...of
遍历数组,字符串,Map,不能遍历对象
模块化语法
import命令用于输入其他模块的功能,即导入其他模块
export命令用于规定模块的对外接口,即暴露
<script type="module">
import{max} from './js/index.js'
</script>
export function max(){
}